Generating a new SSH key pair for GitLab on Linux
ssh-keygen -t rsa -C "GitLab" -b 4096
copy the public key
xclip -sel clip < ~/.ssh/id_rsa.pub
ssh-keygen -t rsa -C "GitLab" -b 4096
copy the public key
xclip -sel clip < ~/.ssh/id_rsa.pub
nano /etc/gitlab/gitlab.rb
Change external_url from yourdomain.com to yourdomain.com:9999
gitlab-ctl reconfigure
References
http://serverfault.com/questions/585528/set-gitlab-external-web-port-number
sudo apt-get install curl openssh-server ca-certificates postfix
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash sudo apt-get install gitlab-ce
sudo gitlab-ctl reconfigure
CustomTimePickerDialog.java
public class CustomTimePickerDialog extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Calendar calendar= Calendar.getInstance();
int hour=calendar.get(Calendar.HOUR_OF_DAY);
int minute=calendar.get(Calendar.MINUTE);
TimePickerDialog timePickerDialog=new TimePickerDialog(getContext(), new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
String time=String.format("%s:%s",hourOfDay,minute);
Toast.makeText(getContext(),time,Toast.LENGTH_LONG).show();
}
},hour,minute,false);
return timePickerDialog;
}
}
MainActivity.java
public class MainActivity extends AppCompatActivity {
Button buttonShow;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buttonShow= (Button) findViewById(R.id.buttonShow);
buttonShow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CustomTimePickerDialog customTimePickerDialog=new CustomTimePickerDialog();
customTimePickerDialog.show(getSupportFragmentManager(),"customDialog1");
}
});
}
}
References
https://github.com/mhdr/AndroidSamples/tree/master/018
fragment_custom_time_picker_dialog.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="iterator.ir.a017.CustomTimePickerDialogFragment">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TimePicker
android:id="@+id/timePickerMain"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:timePickerMode="spinner">
</TimePicker>
<Button
android:id="@+id/buttonDone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/done"/>
</LinearLayout>
</FrameLayout>
CustomTimePickerDialogFragment.java
public class CustomTimePickerDialogFragment extends DialogFragment {
private OnCustomTimePickerClickListener mListener;
Button buttonDone;
TimePicker timePickerMain;
public CustomTimePickerDialogFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment_custom_time_picker_dialog, null);
buttonDone= (Button) view.findViewById(R.id.buttonDone);
timePickerMain= (TimePicker) view.findViewById(R.id.timePickerMain);
buttonDone.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mListener != null) {
mListener.onCustomTimePickerClick(timePickerMain);
}
dismiss();
}
});
return view;
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof OnCustomTimePickerClickListener) {
mListener = (OnCustomTimePickerClickListener) context;
} else {
throw new RuntimeException(context.toString()
+ " must implement OnCustomTimePickerClickListener");
}
}
@Override
public void onDetach() {
super.onDetach();
mListener = null;
}
public interface OnCustomTimePickerClickListener {
void onCustomTimePickerClick(View view);
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="iterator.ir.a017.MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="25dp"
android:id="@+id/buttonShow"
android:text="@string/show" />
</RelativeLayout>
MainActivity.java
public class MainActivity extends AppCompatActivity implements CustomTimePickerDialogFragment.OnCustomTimePickerClickListener {
Button buttonShow;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buttonShow= (Button) findViewById(R.id.buttonShow);
buttonShow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CustomTimePickerDialogFragment customTimePickerDialogFragment=new CustomTimePickerDialogFragment();
customTimePickerDialogFragment.show(getSupportFragmentManager(),"customDialog1");
}
});
}
@Override
public void onCustomTimePickerClick(View view) {
TimePicker timePickerMain= (TimePicker) view;
String time=String.format("%s:%s",timePickerMain.getCurrentHour(),timePickerMain.getCurrentMinute());
Toast.makeText(getBaseContext(),time,Toast.LENGTH_LONG).show();
}
}
References
fragment_custom_dialog.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="iterator.ir.a016.CustomDialogFragment">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="20dp"
android:paddingBottom="30dp">
<TextView
android:id="@+id/textViewMessage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/dialog_msg"
android:gravity="center"/>
<LinearLayout
android:layout_below="@id/textViewMessage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="10dp"
android:gravity="center">
<Button
android:id="@+id/buttonNo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/no"
android:layout_marginRight="10dp"
android:layout_marginEnd="10dp"/>
<Button
android:id="@+id/buttonYes"
android:layout_marginLeft="10dp"
android:layout_marginStart="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/yes"/>
</LinearLayout>
</RelativeLayout>
</FrameLayout>
CustomDialogFragment.java
public class CustomDialogFragment extends DialogFragment {
private OnCustomDialogButtonClickListener mListener;
Button buttonNo;
Button buttonYes;
public CustomDialogFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment_custom_dialog, null);
buttonNo= (Button) view.findViewById(R.id.buttonNo);
buttonYes= (Button) view.findViewById(R.id.buttonYes);
buttonNo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mListener != null) {
mListener.onCustomDialogClick(v);
}
dismiss();
}
});
buttonYes.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mListener != null) {
mListener.onCustomDialogClick(v);
}
dismiss();
}
});
setCancelable(false);
return view;
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof OnCustomDialogButtonClickListener) {
mListener = (OnCustomDialogButtonClickListener) context;
} else {
throw new RuntimeException(context.toString()
+ " must implement OnCustomDialogButtonClickListener");
}
}
@Override
public void onDetach() {
super.onDetach();
mListener = null;
}
public interface OnCustomDialogButtonClickListener {
void onCustomDialogClick(View view);
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="iterator.ir.a016.MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:id="@+id/buttonShow"
android:text="@string/show" />
</RelativeLayout>
MainActivity.java
public class MainActivity extends AppCompatActivity implements CustomDialogFragment.OnCustomDialogButtonClickListener {
Button buttonShow;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buttonShow= (Button) findViewById(R.id.buttonShow);
buttonShow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CustomDialogFragment customDialogFragment=new CustomDialogFragment();
customDialogFragment.show(getSupportFragmentManager(),"customDialog1");
}
});
}
@Override
public void onCustomDialogClick(View view) {
switch (view.getId())
{
case R.id.buttonNo:
Toast.makeText(this,"No",Toast.LENGTH_LONG).show();
break;
case R.id.buttonYes:
Toast.makeText(this,"Yes",Toast.LENGTH_LONG).show();
}
}
}
References
https://github.com/mhdr/AndroidSamples/tree/master/016
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black"
tools:context="iterator.ir.a015.MainActivity">
<ListView
android:id="@+id/listViewMovies"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
</RelativeLayout>
listview_custom_row.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_height="wrap_content"
android:background="@color/black">
<ImageView
android:layout_width="100dp"
android:layout_height="75dp"
app:srcCompat="@drawable/movie01"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:id="@+id/imageViewRow"
android:paddingTop="5dp"
android:paddingBottom="5dp"/>
<TextView
android:text="Title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toRightOf="@+id/imageViewRow"
android:layout_toEndOf="@+id/imageViewRow"
android:layout_marginLeft="15dp"
android:layout_marginStart="15dp"
android:maxWidth="150dp"
android:id="@+id/textViewMovieTitle"
android:gravity="center_vertical"
android:textColor="@color/white"/>
<TextView
android:text="Rating"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:id="@+id/textViewRating"
android:layout_marginRight="20dp"
android:textColor="@color/white"/>
<TextView
android:text="Year"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toLeftOf="@id/textViewRating"
android:layout_toStartOf="@+id/textViewRating"
android:id="@+id/textViewYear"
android:layout_marginRight="5dp"
android:textColor="@color/white"/>
<View
android:layout_width="match_parent"
android:layout_height="2dp"
android:background="#343236"
android:layout_below="@id/imageViewRow"></View>
</RelativeLayout>
MovieDataProvider.java
public class MovieDataProvider {
public int Poster;
public String Title;
public String Year;
public String Rating;
public MovieDataProvider(int poster,String title,String year,String rating)
{
this.Poster=poster;
this.Title=title;
this.Year=year;
this.Rating=rating;
}
}
MovieAdapter.java
public class MovieAdapter extends ArrayAdapter<MovieDataProvider> {
public MovieAdapter(Context context, int resource) {
super(context, resource);
}
@NonNull
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view=convertView;
if (view==null)
{
LayoutInflater layoutInflater=LayoutInflater.from(getContext());
view=layoutInflater.inflate(R.layout.listview_custom_row,parent,false);
}
MovieDataProvider currentMovie=this.getItem(position);
if (currentMovie!=null)
{
ImageView imageViewRow= (ImageView) view.findViewById(R.id.imageViewRow);
TextView textViewMovieTitle= (TextView) view.findViewById(R.id.textViewMovieTitle);
TextView textViewMovieYear= (TextView) view.findViewById(R.id.textViewYear);
TextView textViewMovieRating= (TextView) view.findViewById(R.id.textViewRating);
String year= String.format("(%s)",currentMovie.Year);
imageViewRow.setImageResource(currentMovie.Poster);
textViewMovieTitle.setText(currentMovie.Title);
textViewMovieYear.setText(year);
textViewMovieRating.setText(currentMovie.Rating);
}
return view;
}
}
MainActivity.java
public class MainActivity extends AppCompatActivity {
ListView listViewMovies;
MovieAdapter movieAdapter;
int[] posters={
R.drawable.movie01,
R.drawable.movie02,
R.drawable.movie03,
R.drawable.movie04,
R.drawable.movie05,
R.drawable.movie06,
R.drawable.movie07,
R.drawable.movie08,
R.drawable.movie09,
R.drawable.movie10
};
String[] titles;
String[] years;
String[] ratings;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listViewMovies= (ListView) findViewById(R.id.listViewMovies);
titles=getResources().getStringArray(R.array.movie_titles);
years=getResources().getStringArray(R.array.movie_years);
ratings=getResources().getStringArray(R.array.movie_ratings);
movieAdapter=new MovieAdapter(getApplicationContext(),R.layout.listview_custom_row);
for (int i=0;i<10;i++)
{
MovieDataProvider movieDataProvider=new MovieDataProvider(posters[i],titles[i],
years[i],ratings[i]);
movieAdapter.add(movieDataProvider);
}
listViewMovies.setAdapter(movieAdapter);
}
}
References
https://github.com/mhdr/AndroidSamples/tree/master/015
http://stackoverflow.com/questions/8166497/custom-adapter-for-list-view
sudo add-apt-repository ppa:kazam-team/stable-series sudo apt-get update
sudo add-apt-repository ppa:maarten-baert/simplescreenrecorder sudo apt-get update sudo apt-get install simplescreenrecorder # if you want to record 32-bit OpenGL applications on a 64-bit system: sudo apt-get install simplescreenrecorder-lib:i386