2015/12/18

EF framework LIKE Hibernate SaveOrUpdate()


 from:
http://stackoverflow.com/questions/7552433/what-is-the-equivalent-for-hibenate-saveorupdate-in-entity-framework
果然是stackflow,馬上找到

There is no equivalent. You really have to write it like:
using (DataContext context = new DataContext())
{
    context.Task.Attach(task);
    if (task.ID == 0)
    {
         context.ObjectStateManager.ChangeObjectState(task, System.Data.EntityState.Added);
    }
    else
    {
         context.ObjectStateManager.ChangeObjectState(task, System.Data.EntityState.Modified);
    }

    context.SaveChanges();
 }

2015/12/9

jsp頁面的頭部空白行


From:http://www.111cn.net/jsp/Java/55593.htm
           http://kirby86a.pixnet.net/blog/post/111632383-%E8%A8%AD%E5%AE%9Atomcat-7%EF%BC%8C%E5%8E%BB%E9%99%A4%E7%B7%A8%E8%AD%AF%E5%BE%8C%E7%9A%84jsp%E4%B8%8A%E6%96%B9%E7%94%A2%E7%94%9F%E5%A4%A7%E9%87%8F%E7%9A%84
原因是網頁上方宣告,
例如:
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
若是在宣告使用其他taglib或引入其他方法,那麼空白行就會更多,

方案一:
<%out.clear();%>
缺點:
後面的部分都要緊跟向前縮進不推,
主要是自己也還是暫用一行空白不推薦

方案二:
<%@ page trimDirectiveWhitespaces="true" %>

方案三: in web.xml
<jsp-config>
  <jsp-property-group>
    <url-pattern>*.jsp</url-pattern>
    <trim-directive-whitespaces>true</trim-directive-whitespaces>
  </jsp-property-group>
</jsp-config>


方案四:
如果Tomcat是 Tomcat5.x版本,即JSP2.0和Servlet2.4的規範
web.xml:
<servlet>
         <servlet-name>jsp</servlet-name>
         <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
        <init-param>
             <param-name>trimSpaces</param-name>
             <param-value>true</param-value>
         </init-param>
         <load-on-startup>3</load-on-startup>
     </servlet>

2015/10/26

redmine with apache on centos7


from:http://www.redmine.org/projects/redmine/wiki/install_Redmine_25x_on_Centos_65_complete
yum -y install nano zip unzip libyaml-devel zlib-devel curl-devel openssl-devel httpd-devel apr-devel apr-util-devel mysql-devel gcc ruby-devel gcc-c++ make postgresql-devel ImageMagick-devel sqlite-devel perl-LDAP mod_perl perl-Digest-SHA
 

 
 

from:http://blog.maxkit.com.tw/2014/11/centos-6-redmine.html
在/etc/httpd/conf.d/加上redmine.conf,並編輯redmine.conf加入以下的設定。
vi /etc/httpd/conf.d/redmine.conf

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-4.0.53/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
    PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-4.0.53
    PassengerDefaultRuby /usr/bin/ruby
</IfModule>

RailsBaseURI /redmine
<Directory /var/www/redmine/public>
    # This relaxes Apache security settings.
    AllowOverride all
    Options -MultiViews
</Directory>
在DocumentRoot的路徑下加上redmine的symbolic link
ln -s /var/www/redmine/public /var/www/html/redmine
這個設定過程很重要,因為 redmine 官方只提供了以 virtual host 的方式跟 apache 整合,但我們希望用 http://localhost/redmine/ 的網址方式,連結 redmine,努力兩天後,得到上面的解決方案。

之後就是selinux的問題了,tail /var/log/audit/audit.log |audit2allow -M redmine1.pp
PS:因為執行過長,找到解決方法
http://tech.farend.jp/blog/2015/04/21/redmine-selinux/

インストール

“SELinuxを無効にする”の項は無視し、SELinuxをPermissiveモード(監視はするがアクセス制御はしない)にします。







1
setenforce 0
以降、最新版インストールガイド に従い、Redmineを構築します。

SELinuxの有効化と権限の付与

Redmineを構築し終えたら、以下のコマンドを実行します。







1
2
chcon -R -t httpd_sys_content_t /var/www/redmine/
setsebool -P httpd_unified on
Redmineのルートフォルダに対して「httpd_tというラベル付けがされたファイルから読み出される権限」を適用し、httpdによるファイルへの書き込み許可を設定しています。
最後に、SELinuxをEnforcingモードに戻します。







1
setenforce 1
以上です。
還有一個方式,沒有測試能否執行(還是要執行下面指令,為了結合LDAP驗證)
http://qiita.com/duloxetine/items/9a7285fd709e30ad9a62
# grep PassengerAgent /var/log/audit/audit.log | audit2allow -M passengeragent
# semodule -i passengeragent.pp
# grep ruby /var/log/audit/audit.log | audit2allow -M ruby
# semodule -i ruby.pp
# grep utils.rb:108 /var/log/audit/audit.log | audit2allow -M utils
# semodule -i utils.pp
因為LDAP帶來的資料有中文(或者輸入資料有中文問題),需要使用utf-8編碼,但是會遇到index太長的問題
原因:http://samyubw.blog.51cto.com/978243/223773
 得出的結論是:對於創建innodb的組合索引,如果各個列中的長度不超過767,則不再計算所有列的總長度,如果有超過767的,則給出報警,索引最後 創建成功,但是對於超過767字節的列取前綴索引;對於innodb的單列索引,超過767的,給出warning,最終索引創建成功,取前綴索引(取前 255字節)
解決方式:http://se-suganuma.blogspot.tw/2014/02/ruby-redmine-unicorninstallalminium.html
# vi /etc/my.cnf
# for Redmine
innodb_file_format = Barracuda
innodb_file_per_table = 1
innodb_large_prefix
# /etc/rc.d/init.d/mysqld restart
# vi config/initializers/adapt_utf8mb.rb
ActiveSupport.on_load :active_record do
  module ActiveRecord::ConnectionAdapters
    class AbstractMysqlAdapter
      def create_table_with_innodb_row_format(table_name, options = {})
        table_options = options.reverse_merge(:options => 'ENGINE=InnoDB ROW_FORMAT=DYNAMIC')
        create_table_without_innodb_row_format(table_name, table_options) do |td|
          yield td if block_given?
        end
      end
      alias_method_chain :create_table, :innodb_row_format
    end
  end
end
Try Again
# RAILS_ENV=production bundle exec rake db:migrate
無事完了。


加上GIT
http://redmine-git-hosting.io/get_started/
其中建立使用者git ,redmine改成apache
# Install dependencies (On Debian/Ubuntu)
root# apt-get install build-essential libssh2-1 libssh2-1-dev cmake libgpg-error-dev

# Install dependencies (On Fedora/CentoS/RedHat)
root# yum groupinstall "Development Tools"
root# yum install libssh2 libssh2-devel cmake libgpg-error-devel
# Switch user
root# su - redmine

# First git clone Bootstrap Kit
redmine$ cd REDMINE_ROOT/plugins
redmine$ git clone https://github.com/jbox-web/redmine_bootstrap_kit.git
redmine$ cd redmine_bootstrap_kit/
redmine$ git checkout 0.2.3

# Then Redmine Git Hosting plugin
redmine$ cd REDMINE_ROOT/plugins
redmine$ git clone https://github.com/jbox-web/redmine_git_hosting.git
redmine$ cd redmine_git_hosting/
redmine$ git checkout 1.1.4

# Install gems and migrate database
redmine$ cd REDMINE_ROOT
redmine$ bundle install --without development test
redmine$ bundle exec rake redmine:plugins:migrate RAILS_ENV=production NAME=redmine_git_hosting
.........
(從該來源網站按步驟)實施就可以正常安裝
第一次建立時,請下:
git init --bare
將git server初始化
至於管制方式,關鍵字:ssh ldap

或者vi /etc/password
將git由bin/bash變成bin/git-shell,原因:
出于安全的考虑,我们最好限制用户只能进行git push/pull,但无法登陆。这可以使用git-shell来完成。

會出現錯誤訊息: hint: ~/git-shell-commands should exist and have read and execute access

錯誤訊息參考:
http://nick.txtcc.com/index.php/linux/1116
  •  cp -Rf /usr/local/share/git-XXXX/contrib/git-shell-commands .
  •  # 再來改變權限
  •  chown -R git: git-shell-commands/
  •  chmod +x git-shell-commands/help
  •  chmod +x git-shell-commands/list


PS:selinux 再補充
https://mbrownnyc.wordpress.com/technology-solutions/rhodecode-and-redmine/part-4-redmine-on-apache/
其中PassengerTempDir:
The passenger_temp_dir option (Nginx) and the PassengerTempDir option (Apache) have been replaced by two config options. On Nginx they are passenger_instance_registry_dir and passenger_data_buffer_dir. On Apache they are PassengerInstanceRegistryDir and PassengerDataBufferDir. On Apache, PassengerUploadBufferDir has been replaced by PassengerDataBufferDir.
測試結果:殘念.....XD  not working..

redmine建立好,設定好,還是一直告知你empty:
http://redmine-git-hosting.io/troubleshooting/

My repository seems empty but I’m sure it is not!


A git clone of the repository gives me files!
root$ su - redmine
redmine$ cd REDMINE_ROOT
redmine$ bundle exec rake redmine_git_hosting:fetch_changesets RAILS_ENV=production




2015/10/21

cacti with SELinux


From:
http://docs.cacti.net/manual:087:1_installation.1_install_unix.8_selinux

SELinux Settings

SELinux setting greatly depend on which exact setup you are running. E.g. when installing Cacti into /var/www/html/cacti (which is the default installation location), the web server httpd usually has the required permissions to execute as required. But when e.g. installing into a private directory, e.g. ~/mycacti, you will have to provide specific SELinux settings.

Global SELinux Settings

This is an excerpt from my personal settings when installing into private directory. Any or all of them may be obsolete, when using the default location. Use -P option to make the change permanent

/usr/sbin/setsebool -P httpd_read_user_content=1
/usr/sbin/setsebool -P httpd_tty_comm=1
/usr/sbin/setsebool -P httpd_can_network_connect=1
/usr/sbin/setsebool -P httpd_builtin_scripting=1
/usr/sbin/setsebool -P httpd_enable_homedirs=1
/usr/sbin/setsebool -P httpd_enable_cgi=1

SELinux Settings for Plugins

BOOST

In case you are using BOOST server network setup, it was reported that
/usr/sbin/setsebool -P httpd_can_network_connect=1
 
 
 chcon -R -t httpd_sys_content_t /usr/share/cacti/
<==這句最重要 
 

mantis on CentOS 7 with AD


FROM:
http://eggchang.pixnet.net/blog/post/42099440-%E5%9C%A8-centos-7-%E4%B8%8A%E9%9D%A2%E5%AE%89%E8%A3%9D-mantis-%28microsoft-ad-%E8%AA%8D%E8%AD%89%29
http://eggchang.pixnet.net/blog/post/36649739-mantis-%2B-dokuwiki-%2B-subversion-%2B-active-directory---part-1


# 安裝 Mariadb (替代 MySQL 的 Database)
yum -y install mariadb mariadb-server mariadb-libs
# 安裝 Apache Web Server
yum -y install httpd mod_dav_svn
# 安裝 PHP
yum -y install php php-bcmath php-cli php-common php-enchant php-gd php-intl php-ldap php-mbstring php-mysql php-pdo php-pear php-process php-pspell php-recode php-soap php-xml php-xmlrpc rrdtool-php uuid-php php-pecl-memcache​ php-devel
# 安裝中文字型 (讓統計圖表可以正常顯示中文)
mkdir /usr/share/fonts/truetype
wget http://www.study-area.org/apt/firefly-font/fireflysung-1.3.0.tar.gz
tar xvzf fireflysung-1.3.0.tar.gz
cp fireflysung-1.3.0/fireflysung.ttf /usr/share/fonts/truetype/arial.ttf



# 提高 File Upload 檔案大小的上限到20MB
# vi /etc/php.ini
# 修改 upload_max_filesize = 20M
# 修改 max_file_uploads = 20
# 修改 post_max_size = 20M
# 修改 max_execution_time = 60
# 修改 memory_limit = 512M
# 修改 date.timezone 參數, 改為 date.timezone = 'Asia/Taipei'

=====================================
# 設定 SELinux
chcon -R -t httpd_sys_rw_content_t /var/www/html/mantis
setsebool -P httpd_can_sendmail on
setsebool -P httpd_can_network_connect on
chcon -R --reference /var/www/html/mantis /usr/share/fonts

PS:解決
SYSTEM WARNING: 'opendir(/var/www/html/mantis/plugins/): failed to open dir: Permission denied' in
=====================================
#mv admin admin-old
PS:web提示安全性問題

 使用ADsiedit來找AD資訊,後來改用ldp.exe查資料
ldp.exe-->connect -->BIND-->Account /Password-->Copy DN
將DN資訊修改到下面去
# 設定透過 AD/LDAP 認證與帳號
$g_login_method = LDAP;
$g_ldap_server = 'ldap://192.168.1.8/'; # Microsoft AD Domain Controller
#$g_ldap_port = 3268; # for AD Global Catalog Server (GC)
$g_ldap_root_dn = 'OU=XXXXXX,DC=axman,DC=com,DC=tw'; # 看 Users 是放在哪個位置
$g_ldap_bind_dn = 'Domain\UserNAME'; # 用來連接並查詢 AD 的帳號, 給一般 User 即可
$g_ldap_bind_passwd = 'PASSWORD';
$g_use_ldap_email = ON; # 用 AD 帳號的 Mail 作為 Mantis 裡面的 Mail
$g_ldap_uid_field = 'sAMAccountName';
$g_ldap_realname_field = 'cn'; # 以 AD 帳號的 CN 屬性做為顯示名稱
$g_use_ldap_realname = ON; # 用 AD 帳號的顯示名稱 (CN) 顯示在 Mantis 上
$g_ldap_organization = '';
$g_ldap_protocol_version = 3;
$g_allow_signup = OFF; # 設定不可申請帳號 (用AD/LDAP帳號登入就自動建立帳號, 因此不須申請)
$g_send_reset_password = OFF; # 設定不可以重設 Password (因為 Password 是 AD/LDAP 在控制, Mantis 不能修改)


# 設定傳送郵件的方式與寄件人

$g_administrator_email  = 'Mantis@axman.com.tw';
$g_webmaster_email      = 'mis@axman.com.tw';
$g_from_email      = 'Mantis@axman.com.tw'; # Mantis 以誰的名義寄信 (From)
$g_return_path_email    = 'Mantis@axman.com.tw';
$g_phpMailer_method = 2;
$g_smtp_host = '192.168.1.248'; # SMTP 的位置
$g_smtp_username = ''; # 若 SMTP 需要登入, 則於此設定登入 SMTP 的帳號
$g_smtp_password = ''; # 若 SMTP 需要登入, 則於此設定登入 SMTP 的密碼
$g_enable_email_notification = ON;
$g_log_destination = 'file:/var/www/html/mantis/log/mail.log'; # 寄信後留個紀錄
$g_log_level = LOG_EMAIL_RECIPIENT;

    # 檔案上傳設定

$g_allow_file_upload = ON; # 允許上傳檔案
$g_max_file_size = 20000000; # 設定上傳檔案的大小限制 (最大20M), 除此之外, 前面章節的 php.ini 亦需有相對應的設定
$g_file_upload_max_num = 10; # 最多可同時上傳10個檔案
$g_file_upload_method = DATABASE; # 上傳檔案放置的位置為資料庫. 若想放在 File System, 則設為 DISK
$g_absolute_path_default_upload_folder = '/var/www/html/mantis/attachment'; # 上傳檔案的目錄, $g_file_upload_method = DISK 時需要設定
$g_preview_attachments_inline_max_size = 5120000; # 超過 512KB 的圖形檔不允許預覽

# 打開 Time Tracking 功能 (負責解決 Issue 的人可以輸入處理 Issue 所耗的工時)

$g_time_tracking_with_billing = ON;
$g_time_tracking_enabled = ON;
$g_time_tracking_stopwatch = ON;
$g_time_tracking_view_threshold = DEVELOPER;
$g_time_tracking_edit_threshold = DEVELOPER;
$g_time_tracking_reporting_threshold = MANAGER;
$g_time_tracking_without_note = OFF;

# 其他設定

#$g_path = 'http://webproject.axman.com.tw/mantis/'; # 網址
$g_max_failed_login_count = 5; # 登入失敗最多五次, 超過鎖帳 (Mantis 的帳號)
$g_show_version = OFF; # 不要顯示 Mantis 版本 (網路安全考慮)
$g_default_language = 'english'; # 新建立的使用者預設語系 (若要改為中文則設定為 'chinese_traditional')
$g_window_title = ' <顯示在瀏覽器上方的文字>'; # 瀏覽器標題顯示的文字
$g_show_realname = ON; # 顯示使用者的顯示名稱 (預設是顯示登入帳號, 通常是一串難記的號碼)
$g_short_date_format = 'Y/m/d'; # 短日期格式
$g_normal_date_format = 'Y/m/d H:i'; # 一般日期格式
$g_complete_date_format = 'Y/m/d H:i'; # 長日期格式
$g_default_language     = 'chinese_traditional';  ##預設繁體中文

注意一點:
只要用 Windows Domain 的帳號與密碼登入, Mantis 會自動建立新的使用者, 並賦予 Reporter 的權限, 因此不需要 Administrator 再手動建立. 惟若有專案的需要比較高的機密, 則該專案應該設定為 "非公開", 並明確指定哪些帳號才有權限, 以避免任意的 Domain User 登入後都可以看到所有專案的內容



關於SElinux的檢查


From:
http://www.thedumbterminal.co.uk/posts/2010/07/how_to_troubleshoot_selinux_problems.html

PS:用tail或者cat都可以

cat /var/log/audit/audit.log /var/log/messages | audit2allow
semodule -i mysemanage.pp
 
SELinux errors are logged to syslog by default in Cenntos they are logged to the following file locations:
  • /var/log/audit/audit.log
  • /var/log/messages
其中audit2allow在setroubleshoot套件中

 chcon
 傳統的 chmod 指令是用來設定檔案或目錄的權限的,而同樣的 chcon 指令則是用來設定 SELinux 對檔案或目錄的 content 標籤的

From:http://dywang.csie.cyut.edu.tw/moodle23/dywang/rhcsaNote/node77.html

  • 產生 SELinux 允許的政策模組。
    [root@ip180 ~]# audit2allow -a -M mycertwatch
    ******************** IMPORTANT ***********************
    To make this policy package active, execute:
    
    semodule -i mycertwatch.pp
    
  • 查看產生的模組。
    [root@ip180 ~]# ll mycertwatch*
    -rw-r--r--. 1 root root 885 Jul  1 09:39 mycertwatch.pp
    -rw-r--r--. 1 root root 211 Jul  1 09:39 mycertwatch.te
    
  • 加入新產生的 SELinux 政策模組。
    [root@ip180 ~]# semodule -i mycertwatch.pp
    
  • 查詢 SELinux 模組
    [root@ip180 ~]# semodule -l | grep mycert
    mycertwatch 1.0
    
  • 上述的政策允許某一拒絕,執行時可能還會出現新的拒絕。依同樣的方式再做一次,直到可以為止。
    [root@ip180 ~]# audit2allow -a -M mycertwatch2
    ******************** IMPORTANT ***********************
    To make this policy package active, execute:
    
    semodule -i mycertwatch2.pp
    
    [root@ip180 ~]# semodule -i mycertwatch2.pp
    
     





  •  
     

    MySQL各類引擎對比



    FROM:
    http://blog.roga.tw/2008/11/mysql-%E8%B3%87%E6%96%99%E5%BA%AB%E5%84%B2%E5%AD%98%E5%BC%95%E6%93%8E%E7%9A%84%E9%81%B8%E7%94%A8/
    http://ssorc.tw/663
    http://twpug.net/docs/mysql-5.1/pluggable-storage.html
    簡而言之:
    項目 MyISAM InnoDB Memory
    空間限制 64TB 記憶體
    transaction x x
    大量 Insert 速度
    設置外來鍵 x x
    鎖定層級 資料表 資料列 資料表
    二元樹索引 不知
    雜湊索引 x
    全文搜尋索引 x x
    資料壓縮 x x
    資料快取 x
    索引快取
    記憶體佔用
    磁碟佔用 x

    MyISAM 來說,最大的好處是成本低,而且可以 create views
    InnoDB 也是有缺點像是不支援 FULLTEXT 的索引,且記憶體佔用多、磁碟空間耗用大
    下述儲存引擎是最常用的:
    · MyISAM:預設的MySQL插件式儲存引擎,它是在Web、數據倉儲和其他應用環境下最常使用的儲存引擎之一。注意,通過更改STORAGE_ENGINE配置變數,能夠方便地更改MySQL伺服器的預設儲存引擎。
    · InnoDB:用於事務處理應用程式,具有眾多特性,包括ACID事務支援。
    · BDB:可替代InnoDB的事務引擎,支援COMMIT、ROLLBACK和其他事務特性。
    · Memory:將所有數據保存在RAM中,在需要快速搜尋引用和其他類似數據的環境下,可提供極快的訪問。
    · Merge:允許MySQL DBA或開發人員將一系列等同的MyISAM資料表以邏輯方式組合在一起,並作為1個對象引用它們。對於諸如數據倉儲等VLDB環境十分適合。
    · Archive:為大量很少引用的歷史、歸檔、或安全審計訊息的儲存和檢索提供了完美的解決方案。
    · Federated:能夠將多個分離的MySQL伺服器連結起來,從多個物理伺服器建立一個邏輯資料庫。十分適合於分佈式環境或數據集市環境。
    · Cluster/NDB:MySQL的叢集式資料庫引擎,尤其適合於具有高性能搜尋要求的應用程式,這類搜尋需求還要求具有最高的正常工作時間和可用性。
    · Other:其他儲存引擎包括CSV(引用由逗號隔開的用作資料庫資料表的檔案),Blackhole(用於臨時禁止對資料庫的應用程式輸入),以及Example引擎(可為快速建立定製的插件式儲存引擎提供幫助)。
    請記住,對於整個伺服器或方案,您並不一定要使用相同的儲存引擎,您可以為方案中的每個資料表使用不同的儲存引擎,這點很重要。

    2015/10/16

    BootStrap 的重點


    TALBE、datepick

    注意:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    這個千萬不要宣告4.01只要保留
    <!DOCTYPE HTML>就好
    不然版面都會一堆亂七八糟的問題
     
    必要宣告:
     <link rel="stylesheet" href="css/bootstrap.min.css" media="screen">
    <link rel="stylesheet" href="data:text/css;charset=utf-8," data-href="css/bootstrap-theme.min.css"
     id="bs-theme-stylesheet">
    
    <link rel="stylesheet" href="css/font-awesome.min.css">
    <link rel="stylesheet" href="css/prettify.css">
    <link rel="stylesheet" href="css/base.css">
    <link rel="stylesheet" href="css/bootstrap-datetimepicker.min.css">
    <link rel="stylesheet" href="css/bootstrap-table.min.css">
    <link rel="stylesheet" href="css/bootstrap-editable.css">
    
    
    
    <script type="text/javascript" src="js/jquery.min.js"></script>
    <script type="text/javascript" src="js/bootstrap.min.js"></script>
    
    <script type="text/javascript" src="js/bootstrap-table.js"></script>
    <script type="text/javascript" src="js/locale/bootstrap-table-zh-TW.min.js"></script>
    <script src="js/extensions/export/bootstrap-table-export.js"></script>
    <script src="js/extensions/editable/bootstrap-table-editable.js"></script>
    
    <script type="text/javascript" src="js/bootstrap-datetimepicker.js" charset="UTF-8"></script>
    <script type="text/javascript" src="js/locales/bootstrap-datetimepicker.zh-TW.js" charset="UTF-8"></script>
     
     

    2015/9/1

    ISO 的四階文件定義


    From:

    http://lobogaw.pixnet.net/blog/trackback/32dd61d3ef/90548780

     在ISO 9000文件中, 
    一階文件 : 品質手冊 -- QM (Quality Manual), 
    二階文件 : 品質程序書 -- QP (Quality Procedure), 
    三階文件 : 作業說明書 -- WI (Work Instruction), 
    四階文件 : 品質記錄/表單 -- QR/FM (Quality Records/Form).

    規模較小的公司(如 10人~30人), 文件可簡化為三階文件, 將二階文件與三階文件合併. 
    甚至規模更小之公司(如10人以下)可省略二~三階文件, 以便減少維護ISO系統之人力.


    *補充 : 品質系統文件架構, 可以下圖表示之,

    2015/8/5

    task java:26503 blocked for more than 120 seconds


    案發原因:
    JAVA process一直活著,但莫名其妙無法服務,檢查/var/log/messages,發現有下面訊息:
    Jul 31 06:25:19 localhost kernel: INFO: task java:6498 blocked for more than 120 seconds.
    Jul 31 06:25:19 localhost kernel:      Not tainted 2.6.32-504.el6.x86_64 #1
    Jul 31 06:25:19 localhost kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
    Jul 31 06:25:19 localhost kernel: java          D 0000000000000000     0  6498  26501 0x00000080
    Jul 31 06:25:19 localhost kernel: ffff88003cd6be08 0000000000000082 ffff88003cd6bdc8 ffff88003cd6bdc8
    Jul 31 06:25:19 localhost kernel: ffff88003cd6bdc8 ffff88000000070d 0000000000000001 00000009ffffffff
    Jul 31 06:25:19 localhost kernel: ffff880000000000 ffffffffa0121e08 ffff88007c99d058 ffff88003cd6bfd8
    Jul 31 06:25:19 localhost kernel: Call Trace:
    Jul 31 06:25:19 localhost kernel: [<ffffffffa0121e08>] ? ext4_file_write+0x58/0x190 [ext4]
    Jul 31 06:25:19 localhost kernel: [<ffffffff81236ba1>] ? file_has_perm+0xd1/0xe0
    Jul 31 06:25:19 localhost kernel: [<ffffffff8152cae5>] rwsem_down_failed_common+0x95/0x1d0
    Jul 31 06:25:19 localhost kernel: [<ffffffff8152cc43>] rwsem_down_write_failed+0x23/0x30
    Jul 31 06:25:19 localhost kernel: [<ffffffff812989f3>] call_rwsem_down_write_failed+0x13/0x20
    Jul 31 06:25:19 localhost kernel: [<ffffffff8152c142>] ? down_write+0x32/0x40
    Jul 31 06:25:19 localhost kernel: [<ffffffff8114545c>] sys_mmap_pgoff+0x5c/0x2d0
    Jul 31 06:25:19 localhost kernel: [<ffffffff81012499>] sys_mmap+0x29/0x30
    Jul 31 06:25:19 localhost kernel: [<ffffffff8100b072>] system_call_fastpath+0x16/0x1b
    google大神告訴我:
    http://www.blackmoreops.com/2014/09/22/linux-kernel-panic-issue-fix-hung_task_timeout_secs-blocked-120-seconds-problem/

    Make it permanent

    When the server seemed more stable and no Kernel/Swap/Memory Panic for a week, I edited /etc/sysctl.conf file to make these permanent after reboot.
    someuser@servercore [/home/someuser]$ sudo vi /etc/sysctl.conf

    vm.dirty_background_ratio = 5
    vm.dirty_ratio = 10
     reboot,繼續觀察是否解決

    補充:
    另外搜尋到關鍵字:hung_task_timeout_secs
    查詢到相關資訊:

    http://blog.uouo123.com/post/700.html

    解決辦法:
    按照告警裡的提示將該提醒disable
    echo 0 > /proc/sys/kernel/hung_task_timeout_secs

    意思就是:
    告知是linux會設置40%的可用內存用來做系統cache,當flush數據時這40%內存中的數據由於和IO同步問題導致超時(120s),所將40%減小到10%,避免超時。






    2015/7/20

    Controller is Missing in Visual Studio 2013

    X的,新裝好的vs 2013馬上就給我下狀況.....
    解決方式如來源
    from:
    ASP.NET MVC - menus missing Add Controller and Scaffolded Item?
    http://awesomebitsnbytes.blogspot.com/2015/01/aspnet-mvc-menus-missing-add-controller.html?spref=bl

    Reinstall Microsoft Visual Studio Asp.net MVC 5 Scaffolding extension

    http://stackoverflow.com/questions/19835385/reinstall-microsoft-visual-studio-asp-net-mvc-5-scaffolding-extension

    解釋如下:
    A.刪掉 HKEY_USERS\<SID>\Software\Microsoft\VisualStudio\12.0\ExtensionManager
    B.刪掉C:\Users\mylogin\AppData\Local\Microsoft\VisualStudio\12.0
    C.刪掉C:\Users\mylogin\AppData\Roaming\Microsoft\VisualStudio\12.0
    D.從原始安裝光碟當中,uninstall然後install下面這兩個msi
    AspNetWebFrameworksTools_VS12_ENU.msi
    webtoolsextensionsvs2013.msi

    至於那些要修改專案的guid的,可以忽略了
    <ProjectTypeGuids>{E3E379DF-F4C6-4180-9B81-6769533ABE47};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>

    2015/5/19

    about ThreadLocal......


    From:
    http://minglight.pixnet.net/blog/post/35569918-threadlocal
    http://blog.csdn.net/qjyong/article/details/2158097

    直接講感言:
    threadLocal提供了一個比較安全的方式,利用currentThread為PKey,
    來取得當前thread的區域變數
    我自己也實做類似的方式,但是沒有threadLocal來的安全
    建立一個大家都要繼承的Object,裡面宣告一個static的Map
     然後利用Thread.currentThread().getName()+"Name",來存放當時的TX與session

    public abstract class ServerObject {
       protected final static HashMap<String,Thread> threadPoolHashMap=new HashMap<String, Thread>();
       protected final static HashMap<String,Object> threadPoolSessionObjectHashMap=new HashMap<String, Object>();
       protected Transaction tx;
       protected org.hibernate.Session Hibernatesession;
         protected void reloadProperty() throws FileNotFoundException, IOException {
            Hibernatesession=(Session) threadPoolSessionObjectHashMap.get(Thread.currentThread().getName()+"hibernate-session");
            tx= (Transaction) threadPoolSessionObjectHashMap.get(Thread.currentThread().getName()+"hibernate-transaction");
          }
       
    }

    一開始進入點,就先宣告好當時的session,並且宣告好開始TX
    Hibernatesession = HibernateSessionFactory.getSession();
    threadPoolSessionObjectHashMap.put(Thread.currentThread().getName()+"hibernate-session", Hibernatesession);
    tx = Hibernatesession.beginTransaction();
    threadPoolSessionObjectHashMap.put(Thread.currentThread().getName()+"hibernate-transaction", tx);

    之後一層一層繼承下來,需要取用的時候才抓出來

    這樣看起來好處是:自己開發的,自己習慣
    壞處就是:其他object要取值、remove,無法控制

    後續再來找時間研究 有沒有更幽雅寫法

    2015/5/14

    zsh on CentOS 6.X


    From:
    http://macshuo.com/?p=676
    http://shyuan.github.io/blog/2012/07/10/install-zsh-and-oh-my-zsh-in-ubuntu-linux/


    重點:

    yum install zsh
    wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh
     vi ~/.zshrc

    ZSH_THEME="ys"
    plugins=(git textmate ruby autojump osx mvn gradle)

    [[ -s /root/.autojump/etc/profile.d/autojump.sh ]] && source /root/.autojump/etc/profile.d/autojump.sh
            autoload -U compinit && compinit -u
    bindkey -s "^[Op" "0"
    bindkey -s "^[On" "."
    bindkey -s "^[Oq" "1"
    bindkey -s "^[Or" "2"
    bindkey -s "^[Os" "3"
    bindkey -s "^[Ot" "4"
    bindkey -s "^[Ou" "5"
    bindkey -s "^[Ov" "6"
    bindkey -s "^[Ow" "7"
    bindkey -s "^[Ox" "8"
    bindkey -s "^[Oy" "9"
    bindkey -s "^[Ol" "+"
    bindkey -s "^[Om" "-"

    for pietty:(not working............)
    option-->detail-->
    Terminal -> Keyboard "The Function keys and keypad"

    2015/5/11

    推薦!國外程序員整理的系統管理員資源大全 - 博客 - 伯樂在線 http://blog.jobbole.com/83212/

    自己留存被查


    FROM :推薦!國外程序員整理的系統管理員資源大全 - 博客 - 伯樂在線 http://blog.jobbole.com/83212/


    推薦!國外程序員整理的系統管理員資源大全

    受其他程序員彙編 PHP 資源,kahun 在 Github 發起系統管理員相關的開源資源整理。
    內容分類包括:備份/克隆軟件、云計算/云存儲、協作軟件、配置管理、日誌管理、監控、項目管理…… 當然也有系統管理員相關書籍。
    另外推薦一篇文章:10本適合於系統管理員的最佳書籍,目前比 kahun 他們整理的列表更豐富。

    備份

    備份軟件
    • Amanda -客戶端-服務器模型備份工具
    • Bacula - 另一個客戶端-服務器模型備份工具
    • Backupninja -輕量級,可擴展的元數據備份系統
    • Backuppc -客戶端-服務器模型備份工具和文件共享方案。
    • Burp -網絡備份和還原程序
    • Duplicity -使用rsync算法加密的帶寬-效率備份
    • Lsyncd -監控一個本地目錄樹的變化,然後產生一個進程去同步變化。默認使用rsync。
    • Rsnapshot -文件系統快照工具
    • SafeKeep -使用rdiff-backup,集中的,基於pull的備份
    • TarSnap - 具有一個開源客戶端的安全備份服務
    • UrBackup -另一個客戶端-服務器備份系統
    • DREBS - AWS EBS支持策略的備份腳本

    克隆

    克隆軟件
    • Clonezilla -分區和磁盤鏡像/克隆程序
    • Fog - 另一個計算機克隆解決方案
    • Redo Backup -簡單的備份,恢復和還原

    云計算

    • AppScale – 兼容Google App引擎的開源云計算軟件.
    • Archipel -使用Libvirt管理和監視虛擬機
    • CloudStack -創建,管理和部署基礎云服務的云計算軟件
    • Cobbler -Cobbler是一個Linux安裝服務器,允許快速地構建網絡安裝環境
    • Eucalyptus -兼容AWS的開源私有云軟件
    • Mesos -開發和運行能效高的分佈式系統。
    • OpenNebula -一個用於系統管理員和研發運維的用戶驅動的云管理平台
    • OpenStack -構建私有和開放云的開源軟件
    • The Foreman -Foreman是一個用於物理和虛擬服務器的全生命週期管理工具.FOSS.

    云業務流程

    • BOSH -IaaS業務流程平台,最初用於部署和管理云計算平台PaaS,但也用於通用的分佈式系統。
    • Cloudify -使用Python和YAML編寫的開源TOSCA-based云業務流程軟件平台。
    • Juju -云業務流程工具用於管理服務,比如charms,YAML配置和部署腳本集
    • MCollective -來自Puppet實驗室的管理服務器業務流程和開發的Ruby框架
    • Overcast -在不同的云提供商上部署VMs,並在任何或所有(VM)上通過SSH並行運行命令行和腳本
    • Rundeck - 簡單的業務流程工具
    • Salt -Python編寫

    云存儲

    • git-annex assistant -在你的每一個OSX和Linux電腦,Android設備,可移動驅動,NAS電器和云服務上一個同步文件夾
    • ownCloud -提供你的文件的統一訪問,通過web,你的電腦和你的移動設備
    • Seafile -另一個開源的云存儲解決方案
    • SparkleShare -提供云存儲和文件同步服務。它默認使用Git作為存儲後端
    • Swift -一個高可用,分佈式,最終一致的對象/大數據存儲
    • Syncthing -一個用於私有,加密和身份認證數據的開源系統

    代碼審查

    基於Web的協作式代碼審查系統
    • Gerrit -基於Git版本控制,它促進軟件開發人員審查源代碼修改和批准或拒絕這些變更。
    • Review Board - 基於MIT License的可用自由軟件

    協作軟件

    協作軟件和群件套件
    • Citadel/UX -協同套件(消息和群件)繼承於Citadel家族程序
    • EGroupware -PHP編寫的群件軟件
    • Horde Groupware -基於PHP的協作軟件套件,包括郵件,日曆,wiki,時間跟蹤和文件管理
    • Kolab - 另一個群件套件
    • SOGo - 協作軟件服務器,專注簡單性和可伸縮性
    • Zimbra -協作軟件套件,包括郵件服務和web客戶端

    配置管理數據庫

    配置管理數據庫(CMDB)軟件
    • i-doit - 開源的IT文檔管理和CMDB
    • iTop -一個完全開源的,ITIL,基於web的服務管理工具
    • Ralph -用於大型數據中心或較小本地網絡的資產管理,DICM和CMDB系統
    • Clusto -幫助跟蹤你的庫存,在哪,如何連接,同時提供一個和基礎架構元素交互的抽象接口

    配置管理

    配置管理工具
    • Ansible -Python編寫的,通過SSH管理節點
    • CFEngine -輕量級代理系統。通過申明語言配置狀態。
    • Chef -Rbuy和Erlang編寫,使用純RubyDSL
    • Fabric - Python庫和cli工具,為應用程序部署或系統管理任務簡化使用SSH。
    • Pallet -通過Clojure DSL進行架構定義,配置和管理
    • Puppet - Ruby編寫,使用Puppet聲明語言或Rbuy DSL
    • Salt - Python編寫
    • Slaughter - Perl編寫

    持續繼承和持續部署

    持續集成/部署軟件
    • Buildbot - 基於Python的持續集成工具
    • Drone - 構建在Docker,使用YAML文件配置的的持續集成服務器
    • GitLab CI -基於rbuy。他們也提供GitLab用於管理git存儲庫
    • Go - 開源的持續交付服務器
    • Jenkins - 一個可擴展的開源持續集成服務器
    • Vlad the Deployer -自動化部署

    分佈式文件系統

    網絡分佈式文件系統
    • Ceph -分佈式對象存儲和文件系統
    • DRBD -分佈式塊設備複製
    • LeoFS -非結構化對象/數據存儲和高可用性,分佈,最終一致的存儲系統。
    • GlusterFS - 可擴展,網絡附加存儲文件系統。
    • HDFS - Java編寫的,用於Hadoop框架的分佈式、可伸縮、可移植文件系統
    • Lustre -一種並行分佈式文件系統,一般用於大規模集群計算。
    • MooseFS - 容錯、網絡分佈式文件系統。
    • MogileFS -應用程序級別、網絡分佈式文件系統。
    • OpenAFS -只讀副本和多操作系統支持的分佈式網絡文件系統
    • TahoeLAFS -安全、分散、容錯、點對點分佈式數據存儲和分佈式文件系統。
    • XtreemFS -XtreemFS是一個用於存儲需求的容錯式分佈式文件系統。

    DNS

    DNS服務器
    • Bind -最廣泛使用的域名服務軟件
    • djbdns -DNS應用集合,包括tinydns
    • Designate - DNS REST API,支持多種DNS服務器的後端
    • dnsmasq -為小規模網絡提供DNS,DHCP和TFTP服務的輕量級服務
    • Knot - 高性能,權威的DNS服務器
    • NSD - 權威的、高性能的、簡單的域名服務器。
    • PowerDNS -具有各種數據存儲後端和負載平衡功能的DNS服務器。
    • Unbound - 驗證、遞歸和緩存DNS解析器。
    • Yadifa - 具有DNSSEC兼容的輕量級的權威域名服務器,支持.eu的頂級域名。

    主機控制面板

    Web主機控制面板
    • Ajenti -Linux和BSD控制面板
    • Feathur - VPS供應和管理軟件
    • ISPConfig -Linux主機控制面板
    • VestaCP -用於Linux和Nginx的主機面板
    • Virtualmin -基於webmin的Linux控制面板
    • ZPanel -Linux BSD和Windows控制面板

    IMAP/POP3

    IMAP/POP3郵件服務器
    • Courier IMAP/POP3 -快速,可伸縮,企業級IMAP和POP3服務器
    • Cyrus IMAP/POP3 -運行在密封服務器上,普通用戶不允許登錄。
    • Dovecot -主要考慮安全而編寫的IMAP和POP3服務器
    • Qpopper - 一個古老且流行的POP3服務器實現

    IT資產管理

    IT資產管理軟件
    • GLPI -帶有額外管理接口的信息資源管理器
    • OCS Inventory NG -允許用戶清算IT資產
    • RackTables -數據中心和服務器房間資產,比如將硬件資產,網絡地址,在貨架空間,網絡配置文檔化。
    • Ralph - 針對大型數據中心系統以及小型局域網網絡的資產管理、DCIM和CMDB。
    • Snipe IT -資產和許可證管理軟件

    LDAP

    LDAP服務器

    日誌管理

    日誌管理工具:收集,解析,可視化
    • Elasticsearch - 一個基於Lucene的文檔存儲,主要用於日誌索引、存儲和分析。
    • Fluentd - 日誌收集和發出
    • Flume -分佈式日誌收集和聚合系統
    • Graylog2 -具有報警選項的可插入日誌和事件分析服務器
    • Heka -流處理系統,可用於日誌聚合
    • Kibana - 可視化日誌和時間戳數據
    • Logstash -管理事件和日誌的工具
    • Octopussy -日誌管理解決方案(可視化/報警/報告)

    監控

    監控軟件
    • Cacti -基於Web的網絡監控和圖形工具
    • Cabot - 監控和報警,類似PagerDuty
    • check_mk -Nagios的擴展集合
    • Dash -一個用於GNU/Linux機器的低開銷web儀表板監控。
    • Icinga - Nagios分支
    • LibreNMS - Observium分支
    • Monit - 管理和監控Unix系統的小型開源工具
    • Munin -網絡資源監控工具
    • Naemon -基於Nagios4內核的網絡監控工具,具有性能加強和新功能
    • Nagios -計算機系統,網絡和基礎架構監控軟件
    • Observium -服務器和網絡設備的SNMP監控,運行在linux
    • OMD -開放的監控分佈
    • Opsview -基於Nagios4,Opsview核心,用於小型IT和測試環境
    • Riemann -靈活和快速的事件處理器,允許負責時間和度量分析
    • Sensu -開源的監控框架
    • Sentry - 應用監控,事件記錄和聚合
    • Shinken - 另一個監控框架
    • Thruk - 多後台監控的web接口,支持Naemon,Nagios,Icinga和Shinken
    • Xymon -靈感來自Big Brother的網絡監控
    • Zabbix - Enterprise-class software for monitoring of networks and applications.
    • Zabbix - 監控網絡和應用的企業級軟件
    • Zenoss -基於Zope的應用,服務器和網絡管理平台

    度量和度量收集

    度量收集和顯示軟件
    • Collectd -系統統計收集守護進程
    • Collectl -高精度系統性能指標收集工具。
    • Dashing -Ruby gem,允許快速統計儀表板的開發。基於HTML5,允許在數據中心或會議室進行大屏幕顯示。
    • Diamond -基於Python的統計收集守護進程
    • Ganglia - 基於RRD用於網格和/或集群的服務器的高性能、可伸縮監控設備。兼容Graphite,使用一個單一的收集進程。
    • Grafana -一個Graphite或InfluxDB儀表盤和圖形編輯器
    • 開源的可伸縮繪圖服務器
    • InfluxDB -開源的分佈式時間序列數據庫,沒有外部依賴。
    • KairosDB -快速分佈式可擴展的時間序列數據庫,OpenTSDB 1. x的分支。
    • OpenTSDB -存儲和服務大量的時間序列數據,不丟失粒度。
    • RRDtool - 開源企業標準,用於時間序列數據的高性能數據記錄和繪圖系統
    • Statsd -應用統計監聽

    網絡配置管理

    網絡配置管理工具
    • GestióIP -一個自動的基於web的IPV4/IPV6地址管理工具
    • RANCID -監控網絡設備配置和維護歷史變更
    • rConfig -另一個網絡配置管理工具

    時事通訊

    時事通訊軟件
    • DadaMail -Perl編寫的郵件列表管理器
    • phpList -PHP編寫的時事通訊管理器

    NOSQL

    NOSQL數據庫
    • 列族
      • Apache HBase - Hadoop數據庫,一個分佈式的大數據存儲
      • Cassandra -分佈式數據庫管理系統,設計用於處理大量數據跨多個服務器。
      • Hypertable -基於c++的bigtable DBMS,節省通信,可獨立或在Hadoop類似的分佈式FS上運行。
    • 文檔存儲
      • CouchDB -易於使用,多主機複製的面向文檔的數據庫系統。
      • ElasticSearch - 基於Java的數據庫,受歡迎的日誌聚合,和電子郵件歸檔項目。
      • MongoDB - 另一個面向文檔的數據庫系統
      • RavenDB - 具有ACID/事物功能的基於文檔的數據庫
      • RethinkDB -開源分佈式文檔存儲數據庫,關注JSON
      • FlockDB -Twitter分佈式,容錯圖數據庫
      • Neo4j - 開源圖數據庫
    • 鍵值
      • LevelDB -Google高性能鍵值數據庫
      • Redis - 支持網絡,基於內存,鍵值,亦可持久化數據庫
      • Riak -另一個容錯的鍵值NoSQL數據庫
    NoSQL服務器比較: http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis

    打包

    • fpm - 萬能的多格式包創建器
    • omnibus-ruby - 全棧,跨發行版的包管理軟件(Ruby)
    • packman -全棧,跨發行版的包管理軟件(Python)
    • tito - 為git項目構建RPM

    隊列

    • BeanstalkD - A simple, fast work queue.
    • BeanstalkD - 一個簡單快速的工作隊列
    • Gearman -快速的多語言隊列或任務處理平台
    • NSQ - 實時分發的消息平台
    • RabbitMQ -健壯的,全功能,跨發行版的隊列系統
    • ZeroMQ -輕量級隊列系統

    RDBMS

    關係數據庫管理系統
    • Firebird - 真正的全球開源數據庫
    • Galera -Galera MySQL集群是一個易於使用的高可用性解決方案,具有很高的系統正常運行時間,沒有數據丟失,為未來的增長提供可伸縮性。
    • MariaDB -MySQL的社區開發分支
    • MySQL - 非常流行的RDBMS服務器
    • Percona Server -增強的,可替換MySQL
    • PostgreSQL - 對象關係數據庫管理系統(ORDBMS)
    • PostgreSQL-XL - 基於PostgreSQL的可伸縮開源數據庫集群
    • SQLite -自包容,弱服務器,零配置,支持事務的SQL DBS實現庫

    安全

    安全工具
    • Denyhosts -阻止SSH字典攻擊和暴力攻擊
    • Fail2Ban - 掃瞄日誌文件,並對具有惡意行為顯示的IP採取措施
    • SpamAssassin -一個強大的和受歡迎的垃圾郵件過濾器,它採用多種檢測技術。

    服務發現

    • Consul - Consule是伊戈爾服務發現,監控和配置的工具
    • Doozerd - Doozer是一個高可用,完全一致的存儲,用於少量非常重要的數據
    • ZooKeeper - ZooKeeper是一個集中的服務,用於維護配置信息,命名,提供分佈式同步和組服務

    SMTP

    SMTP服務器
    • Exim -由劍橋大學開發的消息傳輸代理(MTA)
    • Haraka - 用JavaScirpt編寫的高性能,可插入的SMTP服務器
    • MailCatcher -Ruby gem部署一個簡單的SMTP MTA網關,接收所有郵件並在web接口顯示。對調試和開發有用。
    • Maildrop -開源的一次性郵件服務器,對開發也很有用
    • OpenSMTPD -從OpenBSD項目實現的安全的SMTP服務器
    • Postfix - 快速,易於管理和安全的Sendmail替代品
    • Qmail - 安全的Sendmail替代品
    • Sendmail -消息傳輸代理(MTA)

    軟件容器

    操作系統級別的虛擬化
    • Bitnami -為web應用,開發棧和虛擬設備生產開源軟件安裝器或軟件包
    • Docker - 給開發者和系統管理員構建,發佈和運行分佈式應用程序的開放平台
    • OpenVZ -Linux平台基於容器的虛擬化

    SSH

    SSH工具
    • autossh -網絡中斷後自動復位ssh會話。
    • Cluster SSH -通過一個圖形化控制台控制多個xterm窗口。
    • DSH -Dancer的shell/分佈式shell-從一個命令行包裝執行多個遠程shell命令。
    • Mosh - 移動shell
    • parallel-ssh -提供並行的OpenSSH版本和相關工具
    • SSH Power Tool -不使用pre-shared鑰匙的情況下對多個服務器同時執行命令和上傳文件

    統計

    分析軟件
    • Analog - 世界上最流行的日誌分析工具
    • GoAccess -在終端運行的開源的實時web日誌分析和交互視圖
    • Piwik -免費和開源的web分析應用
    • Webalizer - F快速免費的web服務器日誌文件分析程序

    工單系統

    基於web的工單系統
    • Bugzilla -由Mozilla項目開發和使用過的通用缺陷跟蹤和測試工具
    • Cerb - 基於商業開源許可的基於組的郵件管理項目
    • Flyspray - 使用PHP編寫的缺陷跟蹤系統
    • MantisBT -另一個基於web的缺陷跟蹤系統
    • osTicket -開源的技術支持工單系統
    • Otrs -免費和開源故障通知單系統軟件包,公司,組織,或其他實體可以使用它來基於詢問分配工單並跟蹤進一步的溝通。
    • Request Tracker -使用Perl編寫的工單跟蹤系統
    • TheBugGenie -開源的工單系統,具有非常完備的用戶權限分配

    故障排除

    故障排除工具
    • mitmproxy -ython工具,用於攔截,查看和修改網絡流量。在排除某些問題是非常重要的。
    • Sysdig -從一個運行的linux實例上捕獲系統狀態和活動,之後保存,過濾和分析
    • Wireshark -世界上著名的網絡協議分析工具

    項目管理

    基於web的項目管理和缺陷跟蹤系統

    版本控制

    軟件版本和版本控制
    • Fossil -分佈式版本控制,內建wiki和缺陷跟蹤
    • Git -速度很快的分佈式版本控制和源代碼管理
    • GNU Bazaar -由Cannoicalzi贊助的分佈式版本控制系統
    • Mercurial -另一個版本控制
    • Subversion -客戶端-服務器版本控制系統

    虛擬化

    虛擬化軟件
    • Ganeti -在KVM和Xen上構建的集群虛擬服務器管理軟件
    • KVM -Linux內核虛擬化架構
    • oVirt -管理虛擬機,存儲和虛擬網絡
    • Packer - 從單個源配置為多個平台創建相同的機器鏡像
    • Vagrant - 創建完整開發環境的工具
    • VirtualBox -來自Oracle公司的虛擬化產品
    • Xen -用於32/64位Intel/AMD(IA 64)和PowerPC 970架構的虛擬機監控器

    VPN

    VPN軟件
    • OpenVPN -使用一個定製的安全密鑰交換協議,利用SSL / TLS。
    • Pritunl -基於OpenVPN的方案,易於設置
    • SoftEther - 具有高級特性的多協議VPN軟件
    • sshuttle -窮人的VPN
    • strongSwan - Linux下完整的IPsec實現
    • tinc -分佈式點對點VPN

    XMPP

    XMPP服務器

    Webmails

    Webmail應用
    • Mailpile - A modern, fast web-mail client with user-friendly encryption and privacy features.
    • Mailpile - 一個先進,快速的web-mail客戶端,具有用戶友好的加密的私有個性
    • Roundcube - Browser-based IMAP client with an application-like user interface.
    • Roundcube - 基於瀏覽器的IMAP客戶端,具有應用類似的用戶界面

    Web

    Web服務器
    • Apache -最流行的web服務器
    • Cherokee -輕量級,高性能的web服務器/反向代理
    • Lighttpd - speed-critical環境下更優化的web服務器
    • Nginx -反向代理,負載均衡器,HTTP緩存和web服務器
    • uWSGI -uWSGI項目,目標在開發一個構建主機服務的全棧
    Web性能
    • HAProxy - 負載均衡,SSL卸載和性能優化,壓縮和通用web路由
    • Varnish -基於HTTP的web應用加速器,關注內存優化和壓縮

    Wikis

    Wiki軟件
    • DokuWiki -使用簡單和高度通用的wiki,這並不需要一個數據庫。
    • Gollum - 一個簡單,Git-powered wiki,具有不錯的API和本地前端。
    • ikiwiki -一個wiki編譯器
    • Mediawiki -加強Wikipedia
    • MoinMoin -一個高級的易用的擴展性強的Wiki引擎,具有大量的社區用戶TiddlyWiki - JavaScript的完整交互wiki

    資源

    各種資源,比如書籍,網站和文章,用於提升技能和知識

    博客

    書籍

    Sysadmin相關書籍

    編輯器

    開源的代碼編輯器
    • Atom -來自Github的文本編輯器
    • Brackets - 用於web設計和前端開發的開源代碼編輯器
    • Eclipse - 用Java編寫的IDE,具有可擴展的插件系統
    • Geany -GTK2文本編輯器
    • GNU Emacs -一個可擴展,自定義的文本編輯器
    • Haroopad -Markdown編輯器,具有實時預覽
    • ICEcoder -非常棒的代碼編輯器,內建常見的web語言
    • jotgit -Git支持的實時協作代碼編輯
    • Light Table - 下一代代碼編輯器
    • Lime -旨在提供一個Sublime Text的開源替代方案
    • TextMate -OS X下的圖形文本編輯器
    • Vim -一個高可配置的文本編輯器,用於高效編輯

    時事通訊

    • Servers for Hackers - 程序員的時事通訊,發現他們需要知道的服務器相關內容。

    存儲

    軟件包存儲
    • Dotdeb - Debian下LAMP更新包的存儲
    • Remi - RHEL/Centos/Fedora下LAMP更新包的存儲

    網站

    有用的系統管理員相關的網站
    • Ops School - 全面的計劃,將幫助你成為一名運維工程師。
    • Digital Ocean Tutorials - 一個非常龐大資源,獲得基本的應用程序,工具,甚至是系統管理主題。

    貢獻

    請看 貢獻詳情

    關於作者: cucr

     

    關於hibernate查詢--



    來源:
    http://www.cnblogs.com/balaamwe/archive/2012/03/13/2393912.html
    http://shilinfeng.cool.blog.163.com/blog/static/1183214652013528113441283/

    起因:
    使用hibernate查詢一個TABLE,此table的資料,由另外一組hibernate來負責
    剛啟動時正常,但是一段時間之後,就一直停留在固定一筆欄位
    一開始推測:browser自己建立cache,所以要強制F5
    後來還是一樣狀況
    開始追查,推測是hibernate取出資料有錯
    查詢到部分網頁,可解決方式有二:
    A.每次重新取得一個session
    B.使用flush

    摘錄如下:

    A.
    問題描述:這個最開始查詢時是讀取數據庫的,但是在頁面如果對數據進行刪改後,再來查詢就會出現結果錯誤!
    原因:查出的數據會放入到緩存中,而我插入和刪除數據用的是存儲過程做的,因為存儲過程會直接將數據插入到數據庫中而不會放入到緩存中,所以當再次查詢數據時由於是獲取的當前的session,就會默認從緩存中查找數據,就導致了查出的數據會和數據庫的數據不對應!
    結局辦法就是重新打開一個session,就正常了!

    HibernateUtil.getSessionFactory().openSession();

     B.
    Hibernate會儘量將與數據庫的操作延遲,直到必須要與數據庫進行交互,例如save方法一般會在提交時才真正執行,最終在提交時會以批處理的方式與數據庫進行交互,以提高效率。
    而將操作延遲,就是利用緩存,將最後要處理的操作放到緩存中。
    通過設置session.setFlushMode(),可以精確控制Hibernate的FlushMode.
    (1) FlushMode.AUTO:Hibernate判斷對象屬性有沒有改變,如果被更改成為髒數據,則在一個查詢語句前將更新此改動以保證數據庫的同步。這也是Hibernate的默認清理模式。
    (2) FlushMode.COMMIT:在事務結束之前清理session的緩存。這樣有可能導致查出髒數據
    (3) FlushMode.NEVER:除非強制調用Session.flush(),否則永遠不清理Session。相當於將數據庫設置為一個只讀的數據庫。
           【如果此時進行數據的寫入操作,會發生錯誤】
    (4) FlushMode.ALWAYS:在每一個查詢數據之前都調用Session.flush()。很顯然這種效率很低。 

    筆記下來,以後好查詢


    2015/5/5

    終端伺服器授權到期解決方式



    Windows终端服务客户端临时许可证到期后会提示因许可证发生错误无法连接终端服务器.
    解决方法:
    1、终端服务在客户端没有许可证的情况下,会临时颁发一个临时许可证给客户,这个许可证的有效期是90天,过了90天,如果客户访问服务器的时候,服务器发现客户已经被颁发过临时许可证,就不再颁发,这样客户在90天外就不可以再访问服务器了。但是这个许可证是存储在客户机上的。只要把这个许可证删掉,在访问服务器的时候,就又会颁发一个临时许可证给客户,这样就又有90天的访问权限。

    这个临时许可证存储在客户机的注册表中,位于: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing 把这项删掉,就可以删除颁发的临时许可证。
    这种方法可以说是最简单方便了。缺点就是要告知所有要使用服务器的用户.

    2、另一种方法是在安装终端服务的时候,调整系统时间为2099年,也即调整到很远的将来。在系统时间为2099年的时候,客户端登录一次服务器,然后再把系统时间调回现实时间,这样也可以避开时间限限。这种方法麻烦,但是比较实用.

    3、第三种方法是网上流行的骗取微软的许可证方式(可参考:http://news.weixiuwang.com/server/2006-8/2006E8Y24;8590E61246139_1.htm),大致做法如下:
    去微软注册(https://activate.microsoft.com/),购买方式选择:Select or Exterprise Agreement,得到7组数字字母的服务器ID,服务器上选择选择电话注册,然后获取客户机许可证,数量随便填,注册号码可用:4954438 (这儿是关键)
    OKID拿到了,再也没有什么90天的限制。
    这时会提示:
    已成功处理您的客户端许可证令牌请求。
    您应该立即打印这个页面
    您需要在“终端服务器 CAL 安装向导”中输入的许可证密钥包 ID :
    YVVXH - XYCVP - 8YPFH - RHG9B - TCJJV - 8D6TG - H34JD
    许可证服务器 ID 如下的许可证服务器: VM8BR-WGJD8-RJ6KK-MRCCC-6B97Y-TV2PH-JFM87
    谢谢您激活终端服务许可证! 69813-640-3867693-45693
    这种方法应该也适用于windows2k3的终端授权。

    JPA+complex key+custom Query

      來源: https://www.cnblogs.com/520playboy/p/6512592.html   整個來說,就是有複合主鍵 然後要使用  public interface XxXXxx DAO extends CrudRepository<Tc...