Popular Posts
javax.net.ssl.SSLHandshakeException: Connection closed by peer in Android 5.0 Lollipop Recently, there is a error occurs when access website via ssl connection like below although it worked fine several days ago. // Enable SSL... Enable SSL connection for Jsoup import org.jsoup.Connection; import org.jsoup.Jsoup; import javax.net.ssl.*; import java.io.IOException; import java.security.KeyManagement... set/remove cookie using applet jdk/jre 1.4 later, the library is included in plugin.jar file. import java.applet.Applet; import java.util.ArrayList; import java.util.Date;...
Stats
Operate form in WebView and get content
  1. class ContentLoader {
  2.     @JavascriptInterface
  3.     public void load(String body) {
  4.         // do something
  5.     }
  6. }
  7.  
  8. @Override
  9. protected void onCreate(Bundle savedInstanceState) {
  10.     super.onCreate(savedInstanceState);
  11.     setContentView(R.layout.activity_main);
  12.  
  13.     WebView webView = createWebView();
  14.  
  15.     webView.loadUrl("https://www.somedoamin.com/product.jsp");
  16.     // enable javascript
  17.     webView.getSettings().setJavaScriptEnabled(true);
  18.     // add interface
  19.     webView.addJavascriptInterface(new ContentLoader(), "ContentLoader");
  20.     webView.setWebViewClient(new WebViewClient() {
  21.  
  22.         int action;
  23.  
  24.         @Override
  25.         public void onPageFinished(WebView view, String url) {
  26.             switch (action) {
  27.                 case 0:
  28.                     // fill field and submit
  29.                     view.loadUrl("javascript:{\n" +
  30.                             "\tdocument.querySelector('input[name=cgi_tel_no]').value='12345678';\n" +
  31.                             "\tdocument.querySelector('input[name=cgi_id_no]').value='abcdef';\n" +
  32.                             "\tsubmitMyForm();\n" +
  33.                             "};");
  34.                 case 1:
  35.                     // get content from 'ContentLoader' interface
  36.                     view.loadUrl("javascript:{\n" +
  37.                             "\twindow.ContentLoader.load('<body>'+document.body.innerHTML+'</body>');\t\n" +
  38.                             "};");
  39.                     break;
  40.             }
  41.  
  42.             action++;
  43.         }
  44.     });
  45. }
  46.  
  47. WebView createWebView() {
  48.     WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
  49.     WindowManager.LayoutParams params = new WindowManager.LayoutParams(WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE, PixelFormat.TRANSLUCENT);
  50.     params.gravity = Gravity.TOP | Gravity.LEFT;
  51.     params.= 0;
  52.     params.= 0;
  53.     params.width = 0;
  54.     params.height = 0;
  55.  
  56.     LinearLayout layout = new LinearLayout(this);
  57.     layout.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT));
  58.  
  59.     WebView view = new WebView(this);
  60.     view.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
  61.     layout.addView(view);
  62.  
  63.     windowManager.addView(layout, params);
  64.  
  65.     return view;
  66. }
Gitlab

安裝

線上安裝,支援的 OS 有 Ubuntu、Debian、CentOS、Raspberry PI 2 on Raspbian。直接依照說明即可完成。

建議安裝時也同時下載目前安裝的版本,避免之後有移轉問題需要還原。各版本下載位址為

備份

  1. # 執行備份
  2. gitlab-rake gitlab:backup:create

還原

  1. # 複製備份檔至備份路徑
  2. sudo cp 1493107454_2017_04_25_9.1.0_gitlab_backup.tar /var/opt/gitlab/backups/
  3.  
  4. # 停止服務
  5. sudo gitlab-ctl stop unicorn
  6. sudo gitlab-ctl stop sidekiq
  7.  
  8. # 開始還原
  9. sudo gitlab-rake gitlab:backup:restore BACKUP=1493107454_2017_04_25_9.1.0
  10.  
  11. # 啟動系統
  12. sudo gitlab-ctl start
  13.  
  14. # 檢查還原結果
  15. sudo gitlab-rake gitlab:check SANITIZE=true

由 SVN 移轉

建立 svn 與 git 作者的 mapping 檔(author.txt)

  1. nanashi07 = Bruce <nanashi07@haha.com>

由 svn 簽出為 git 專案

  1. # clone from svn
  2. # with standard layout(trunk/branches/tags), "-s" argument is required
  3. # "author.txt" contains a list that svn accounts mapping to git authors
  4. git svn clone https://10.10.10.162/svn/caml/Caml.Maker --authors-file=author.txt --no-metadata -s Caml.Maker
  5. cd Caml.Maker
  6. # convert tags
  7. git for-each-ref refs/remotes/tags | cut -d / -f 4- | grep -v @ | while read tagname; do git tag "$tagname" "tags/$tagname"; git branch -r -d "tags/$tagname"; done
  8. # convert branches
  9. git for-each-ref refs/remotes | cut -d / -f 3- | grep -v @ | while read branchname; do git branch "$branchname" "refs/remotes/$branchname"; git branch -r -d "$branchname"; done
  10. # add remote repository
  11. git remote add origin http://nanashi07:password@10.10.10.222/caml/Caml.Maker.git
  12. # push to remote
  13. git push origin --all
  14. cd ..

升級

  1. # 停止服務
  2. sudo gitlab-ctl stop unicorn
  3. sudo gitlab-ctl stop sidekiq
  4. sudo gitlab-ctl stop nginx
  5.  
  6. # 備份
  7. sudo gitlab-rake gitlab:backup:create
  8.  
  9. # 安裝下載的檔案
  10. # Ubuntu/Debian:
  11. sudo dpkg -i gitlab_x.x.x-omnibus.xxx.deb
  12.  
  13. # CentOS:
  14. sudo rpm -Uvh gitlab-x.x.x_xxx.rpm
  15.  
  16. # 重新設定與啟動
  17. sudo gitlab-ctl reconfigure
  18. sudo gitlab-ctl restart