<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    一點一滴,編程人生

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      69 隨筆 :: 0 文章 :: 25 評論 :: 0 Trackbacks

    2012年6月20日 #

    今天為了這個問題了忙乎了一整天,特此記錄下,希望對有遇到同樣問題的同學有幫助。事情的經過是這樣的,原先使用atomikos一直把數據源用jndi配置到tomcat的context.xml下,一直這么用沒有出現問題,配置如下
        <Resource name="jdbc/cms" auth="Container"
            type
    ="com.atomikos.jdbc.AtomikosDataSourceBean" factory="com.atomikos.tomcat.EnhancedTomcatAtomikosBeanFactory"
            uniqueResourceName
    ="jdbc/cms" xaDataSourceClassName="com.mysql.jdbc.jdbc2.optional.MysqlXADataSource"
            xaProperties.URL
    ="xxxx"
            xaProperties.user
    ="xxxx" xaProperties.password="xxxx"
            xaProperties.pinGlobalTxToPhysicalConnection
    ="true" maxLifetime="60" poolSize="4" />

    最近項目要遷移到maven下,所以把context.xml的數據源配置挪到了spring.xml下,配置如下
        <bean id="myDataSource" class="com.atomikos.jdbc.AtomikosDataSourceBean" init-method="init" destroy-method="close">
           
    <property name="uniqueResourceName" value="masterDB" />
           
    <property name="xaDataSourceClassName" value="com.mysql.jdbc.jdbc2.optional.MysqlXADataSource"/>  <!-- SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase, Hana]  -->  
           
    <property name="poolSize" value="0" /> 
           
    <property name="minPoolSize" value="0"/>    
           
    <property name="maxPoolSize" value="9"/>    
           
    <property name="borrowConnectionTimeout" value="60"/>    
           
    <property name="reapTimeout" value="20"/>    
           
    <property name="maxIdleTime" value="60"/>    
           
    <property name="maintenanceInterval" value="60"/>    
           
    <property name="loginTimeout" value="60"/>
           
    <property name="xaProperties">  
                
    <props>
                    
    <prop key="url">xxxx</prop>  
                    
    <prop key="user">xxxx</prop>
                    
    <prop key="password">xxxx</prop>
                
    </props>
            
    </property>  
        
    </bean>
    因為上面這個配置我是照搬網上的,所以覺得沒有問題,可是項目啟動后,用此數據源提交事務時確報以下錯誤:

    Raised -5: invalid arguments were given for the XA operation 或 XAER_INVAL: Invalid arguments (or unsupported command)

    一開始我以為maven配置的mysql-connector-java驅動版本不對,或是atomikos版本不對,可是不管如何換版本都不行,就快要瘋了的時候,我看到了原先jndi方式中有這么一行代碼
    xaProperties.pinGlobalTxToPhysicalConnection="true"
    就因為缺少上面這句話導致了問題,上網查資料,據說是mysql xa bug,有興趣的可以看如下連接,最后配置如下:
           <property name="xaProperties">  
                
    <props>
                    
    <prop key="pinGlobalTxToPhysicalConnection">true</prop>  <!-- mysql必須配置此參數,要不然無法提交事務 -->
                    
    <prop key="url">xxxx</prop>  
                    
    <prop key="user">xxx</prop>
                    
    <prop key="password">xxxx</prop>
                
    </props>
            
    </property> 



    posted @ 2017-06-28 19:32 writegull 閱讀(2487) | 評論 (0)編輯 收藏

    事情描述:
    本人在阿里云上創建了一個linux服務器,跑了一個自己的測試web項目。搭建了redis。想方便測試用,就沒有對redis進行任何安全防護并暴露在了公網上。期間阿里云發現了此問題,還發短信提醒我,由于最近在公司一直加班也沒有時間理會,沒想到就在今天真的被黑了,事后心想多虧是個測試服務器,如果是正式環境,也真危險,這個黑客也沒有停下腳步,通過redis強大的能力在/root/.ssh目錄下面上傳了公鑰,徹底攻破了服務器,免密碼登錄服務器,一般黑客到這步也就看看有沒有興趣的數據,這個黑客一看這就是個沒有價值的測試服務器,所以心一橫,在我這上面裝了個DDOS攻擊軟件,把我的機器當起肉雞。

    1.這就是黑完后留下的公鑰/私鑰,刪除authorized_keys,id_rsa, id_rsa.pub這三個文件吧,除非還想讓他繼續黑下去。。。。


    2.通過redis的key *命令可以看到有個叫crackit的key。這就是黑客在入侵后留下來的,原先set的值是公鑰,入侵成功之后就改成這個了,把這個key也刪除掉吧。


    3.修改redis默認端口吧,不讓黑客利用6379端口。在redis安裝目錄中,修改redis.config文件。修改完了別忘了重啟redis服務,

    # redis-server /etc/redis/redis.conf 開啟

    # redis-cli shutdown 關閉



    4.重啟后查看redis是否運行
    ps -x | grep redis
    5.通過指定端口訪問redis。
    redis-cli -p 6666

    6.給redis設置密碼或者干脆設置成只能內網訪問

    7.通過top命令發現了幾個可疑的程序



    8.minerd這個程序是個用來挖掘萊特幣的,這個黑客看來干了不少壞事啊。。我們用命令 ps -ef|grep minerd 查找一下這個進程,殺掉這個進程kill -9 18267,并且去/tmp目錄刪除minerd目錄


    9.黑客在tmp目錄留下了一個叫1.sh的腳本,是用來下載挖掘萊特幣程序的。也把它kill掉吧。以下是腳本內容。


    10.通過cat /etc/passwd命令可以看到有一個叫作syss的非法用戶,權限還很高,跟root一樣,刪掉他吧,這是黑客入侵后方便進入的。使用命令userdel -f syss 強制刪除一個用戶,哪怕他正在登錄。


    11.去/mnt目錄上,可以看到黑客掛載了很多程序,刪除他們吧。


    12.通過nethogs軟件可以按進程實時統計網絡帶寬利用率,這個用來看是否存在DDOS攻擊最好不過了。

    13.暫時解決對外DDOS攻擊,最快的辦法就是用防火墻,這個阿里云提供的腳本幫了大忙。直接上傳到服務器上,運行一下世界就清靜了。下載地址:
    https://help.aliyun.com/knowledge_detail/5973920.html?spm=5176.7618386.5.1.H8H33f

     
    posted @ 2015-12-15 01:13 writegull 閱讀(4123) | 評論 (4)編輯 收藏

    今天在修改server.xml調試程序時,遇到下面這個問題,clean,重啟都不好使。

                    Removing obsolete files from server..
                   Could not clean server of obsolete files: null
                    java.lang.NullPointerException
    解決方法是把.metadata\.plugins\org.eclipse.wst.server.core這個目錄下面的tmp0刪除掉,再clean下就可以了。可能是緩存問題。
    posted @ 2015-01-03 16:58 writegull 閱讀(7283) | 評論 (0)編輯 收藏

    有時候需要手動地去禁用一個uibutton,使用button.enabled = NO的時候雖然能夠達到目的但也會帶來副作用,那就是按鈕變的半透明了。有時候應用不需要這種副作用,可以嘗試使用button.userInteractionEnabled = NO來達到這個目的,在禁用按鈕的同時也不會使得按鈕變得半透明。
    posted @ 2013-12-23 10:29 writegull 閱讀(601) | 評論 (0)編輯 收藏

    裝win8后發現cpu占用率50%-60%,而且磁盤瘋狂讀寫,是com surrogate這個程序,還有幾個服務造成的,之后我把com surrogate結束進程了cpu使用率直接降低到10%以下,我就郁悶了。
    解決方案:
    1,在“更多電腦設置”那里的“用戶”改為“本地用戶”。
    2,“離開”家庭組(一般都是它的原因)
    3,“同步設置”關
    4,一般“共享”什么的不到需要都是“關”的狀態。
    5,做完以上幾點都不行,就真幫不了你了。
    posted @ 2013-03-18 22:47 writegull 閱讀(399) | 評論 (0)編輯 收藏

    這個問題似乎只有在手動改變系統狀態欄級別的情況才會出現

    例如:self.window.windowLevel = UIWindowLevelStatusBar+1;

    這樣設置的話相當于影響了彈出短信或郵件控制器頁面window的級別,所以造成不顯示鍵盤問題(不過此問題在ios6以下沒有)

    解決方法:在當前視圖控制器中加入下面的代碼,即可解決

    - (void) viewDidAppear:(BOOL)animated {

        [super viewDidAppear:animated];

        self.window.windowLevel = UIWindowLevelNormal;

    }

    posted @ 2012-10-30 21:08 writegull 閱讀(1576) | 評論 (1)編輯 收藏

    原文地址:http://blog.csdn.net/pjk1129/article/details/7255163

    最近在做Apple的IOS開發,有開發靜態庫的需求,本身IOS的開發,只允許靜態庫或者Framework。在Xcode上沒有找到允許編譯,如同Android上的*.so和Win32上的dll這樣的說法。不過Framework這樣的框架,估計也是類似動態庫的實現,不過沒有具體研究過,后續繼續深入研究。

    我這個文檔的靜態庫的開發是基于Xcode4.2和iOS SDK5.0編寫的。Xcode4跟之前的Xcode3還是有不少的差別的。

    下面就簡單寫一個靜態庫和一個調用靜態庫的例子。

    靜態庫的編寫:

    1.靜態庫工程的建立:

    Xcode New一個新的project,選擇IOS下面的Framework&Library,下面有一個Cocoa Touch Static Library。直接next去建立一個Print這樣的工程。


    2.工程建立

    我們添加很簡單的"- (void)printA;"和"+ (void)printB;"的方法,這個方法的實現也是很簡單的,在*.m文件中的實現就是一個"NSLog(@“”);"這樣我們編譯出來的libstaticlib就可以被其他的IOS工程進行調用了。這塊注意一下,目前我們的Print->iOS Device



    3.編譯前準備

    這里分release與debug版本,需要設置一下


    4.OK,編譯

    我們可以在Products下面找到我們編譯生成的libstaticlib.a這個文件。

    注意未編譯前為紅色:左                             編譯后為黑色: 右

           

    5.ok

    在右邊 這個文件上右鍵Open In Finder。這時候我們打開了一個文件夾,里面有一個libPrint.a。后面我們繼續編寫一個調用這個libPrint.a的App。但是這個App在編譯時候會出錯,通過這個錯誤的解決,說明Xcode的一些編譯相關的東西。這里,我們在command下面根據路徑找到這個文件,用這個非常重要的命令查看一下這個lib的信息!

    打開終端寫入如下命令:這是什么?這就是所在的路徑 

    以下均是在自己的mac上的路徑。你需要將/Users/pjk1129/Library/Developer/Xcode/DerivedData/Print-dgfkluumuexoxhcapzidtsmdgqcj/Build/Products/ 替換成你的路徑。

    cd /Users/pjk1129/Library/Developer/Xcode/DerivedData/Print-dgfkluumuexoxhcapzidtsmdgqcj/Build/Products/  

    我們手動打開這個路徑:可以看到如下信息:Release-iphoneos


    這個是給真機用的,那我們要給模擬器和真機封裝的靜態庫應該都能用才好。這個下面介紹!!!!!  


    然后再在終端 打開這個文件:cd /Users/user/Library/Developer/Xcode/DerivedData/UItab-dbvoszbzpavyglaboxgflvrnzfce/Build/Products/Debug-iphoneos

    命令是:lipo -info libPrint.a,可以看到顯示的結果是:Arch是  Arm7。下面我會具體介紹一下。


    6.建立一個調用這個libPrint.a的應用

    應用就很簡單了,我們添加剛才libPrint.a的*.h文件。 然后在這個工程的Build Phases的Link Binary With Library里面添加我們剛才拷貝出來的那個libPrint.a。



    7.插入了h和a文件后

    我們就可以在control里面調用這個libPrint.a 函數了。

    #import "AstroDiskAppDelegate.h"

    #import "Print.h"


    @implementation AstroDiskAppDelegate


    @synthesize window = _window;


    - (void)dealloc

    {

        [_window release];

        [_viewController release];

        [super dealloc];

    }


    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    {

        

        //調用libPrint.a

        [Print printB];

        Print  *print = [[[Print alloc] init] autorelease];

        [print printA];


        self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

        [self.window makeKeyAndVisible];

        return YES;

    }


    8.OK,編譯運行這個應用程序。

    編譯出現錯誤了。這個就是這篇文檔的關鍵了。主要就是為了介紹編譯靜態庫相關的東西。



    9.可以看到undefine symbols for architecture i386這樣的錯誤。

    其實這個錯誤原因很簡單,就是因為,我們用錯了編譯出來的libUITab.a lib,在模擬器里面,我們需要的是基于i386構架編譯的static lib,但是這個a文件,大家還記得前面說的arm6 arm7構架的么。這個a其實是在iphone這個arm構架上運行的代碼。其實show in finder指向的是一個ios device的庫,并不是i386模擬器下的庫。那如何編譯i386的庫呢?看見第二張圖片的Print>IOS Device了么?我們將這個iOS Device修改成iPhone5.0 Simulator。在進行編譯,這樣就可以編譯出i386下面的庫。這個時候我們show in finder打開的文件夾還是ios device下的庫。我們最好自己去那個目錄下看一下。這里我們用command去查看了一下目錄情況,如下:可以看到一個iphoneos的目錄和一個simulator的目錄。


    然后我們再看看這個目錄與第4條所示的目錄有什么不同! 同樣也有一個libPrint.a文件。



    10.錯誤原因分析

    Release-iphoneos里面的是基于arm6 arm7編譯出來的庫文件。Release-iphonesimulator文件夾下面的是基于i386編譯出來的文件。

    11.合并.a文件,制作通用靜態庫

    這二個庫一個是用于真機運行的一個是用于模擬器運行的.其實我們可以利用lipo將這二個文件打包成一個通用的a文件。命令如下:

    /Users/user/Library/Developer/Xcode/DerivedData/UITab-dgfkluumuexoxhcapzidtsmdgqcj/Build/Products替換成你的路徑。 

    /Users/user/Desktop/libPrint.a替換成合并后的路徑。 

    lipo -create /Users/pjk1129/Library/Developer/Xcode/DerivedData/Print-dgfkluumuexoxhcapzidtsmdgqcj/Build/Products/Release-iphonesimulator/libPrint.a  /Users/pjk1129/Library/Developer/Xcode/DerivedData/Print-dgfkluumuexoxhcapzidtsmdgqcj/Build/Products/Release-iphoneos/libPrint.a  -output /Users/pjk1129/Desktop/libPrint.a


    12.打包以后的庫文件,我們查看信息

    然后打入如下命令:lipo -info /Users/pjk1129/Desktop/libPrint.a 

    可以看到如下信息:


    如上,你已經看到了,它具備了i386和arm7的條件。 現在我們這個靜態庫,支持的構架已經是armv7 i386了。


    13.ok,經過上述步驟后

    這個通用庫生成后,我們將原來,調用這個庫進行替換一下,在進行編譯,成功編譯,運行結果如下所示:


    posted @ 2012-10-09 18:14 writegull 閱讀(647) | 評論 (0)編輯 收藏

    three20 wiki 地址:https://github.com/facebook/three20/wiki/Debugging

    You can use Three20's debugging facilities instead of NSLog() / assert(). This would give you an ability to turn off debugging messages without commenting out all NSLog's, sort log messages by importance (errorwarninginfo).

    Turn on debugging(打開調試)

    These instructions are for Xcode 3:

    • Right-click on project, choose "Get Info".
    • In the "Build" tab, choose "Configuration => Debug" (you probably want to enable this only for debug builds)
    • While in the "Build" tab, search for "Preprocessor Macros" under the "GCC 4.2 - Preprocessing" section.
      • Add a declaration that reads DEBUG. That way you enable debugging in general.
      • Add a declaration that reads TTMAXLOGLEVEL=TTLOGLEVEL_INFO. By doing this, you set the default debugging output to beTTLOGLEVEL_INFO, the most descriptive one.

    Debugging preprocessor macro

    Use debugging

    Logging

    Use these instead of NSLog(). Which level gets printed to the console and which doesn't depends on what's set in preprocessor macros asTTMAXLOGLEVEL (see above).

    TTDERROR(text, ...)    // Log level 1 TTDWARNING(text, ...)  // Log level 3 TTDINFO(text, ...)     // Log level 5 TTDPRINT(text, ...) 

    Example

    If I got this in AppDelegate.m of my project HelloWorld:

    - (void)applicationDidFinishLaunching:(UIApplication *)application {	     TTDINFO(@"Hello!"); } 

    ...the console output would look like this:

    2010-05-15 01:04:20.107 HelloWorld[65222:207] -[AppDelegate applicationDidFinishLaunching:](22): Hello! 

    Conditional logging

    This is a type of logging facility which only outputs something if a particular condition is met:

    TTDCONDITIONLOG(condition, text, ...); 

    Example

    TTDCONDITIONLOG(TTDFLAG_URLREQUEST, @"Request parameters: %@", request.parameters); 

    Debug-only assertions

    Three20 also provides support for assertions which only work in the debug build.

    TTDASSERT(condition_which_would_lead_to_application_termination_when_true); 

    Example

    // Not that implementing safeAddSubview: is a good idea - (void)safeAddSubview:(UIView*)view {     TTDASSERT(nil != view);     if (nil == view) {         return;     }     [self addSubview:view]; } 

    See also

    Links

    posted @ 2012-09-27 10:30 writegull 閱讀(403) | 評論 (0)編輯 收藏

    翻譯:http://www.joshsunshine.me.uk/2012/02/29/ios-development-remove-old-notifications-from-notification-center.html

    不逐字翻譯了,只是大體說一下。
    看作者的意思,應該是他經常收到N多通知,而通過其中一條通知打開一個app以后,發現那個app的其它通知還在通知中心。作者不喜歡這樣的情況。我以為我也存在的這樣的情況,馬上檢查了一下,發現沒有。看來是少數app的問題。但是也記錄一下。作者總結的從通知中心移除通知的三種方法:
    1.將app的BadgeNumber設為0,就是app圖標右上角那個

    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];


    2.如果BadgeNumber本身就是0的情況,可以先將其設1再設置成0

    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:1];
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];

    3.如果以上的辦法都不好使的話,那就用本地通知欺騙一下。

    UIApplication* application = [UIApplication sharedApplication];
    NSArray* scheduledNotifications = [NSArray arrayWithArray:application.scheduledLocalNotifications];
    application.scheduledLocalNotifications = scheduledNotifications;

    就這么多了,我仔細想了一下,為什么我的應用從其中一條通知打開的時候,其它的通知消失掉:
    因為我在程序啟動的時候就執行了第一條:)

    posted @ 2012-09-14 17:51 writegull 閱讀(2755) | 評論 (0)編輯 收藏

    使用MFMessageComposeViewController 編寫發短信模塊時界面是英文的情況下,用下面的方法可以解決問題

    在plist里面Localization native development region 選擇 china ,然后Localized resources can be mixed 選 YES,如果沒有Localized resources can be mixed,需手動添加
    posted @ 2012-09-10 18:12 writegull 閱讀(703) | 評論 (0)編輯 收藏

    1.圖標的圓角效果是系統自動加上的。

    2.光暈效果雖然也是系統加上的,但可以通過程序中設置參數來去掉內建光暈效果。

    方法:在info.plist里面添加一條記錄UIPrerenderedIcon,新版的XCODE 會自動識別為Icon already includes gloss effects 打上勾就OK了。如果沒有識別的右邊欄寫上YES就可以

    posted @ 2012-07-31 14:06 writegull 閱讀(627) | 評論 (0)編輯 收藏

         摘要:   閱讀全文
    posted @ 2012-07-25 11:14 writegull 閱讀(1970) | 評論 (1)編輯 收藏

    原文地址:http://blog.itotem.com.cn/?p=22

    - alloc, copy, retain會把引用計數+1

    - release會把引用計數-1

    - 局部變量如果初始化時不是autorelease的,要及時調用release釋放,并且賦值為nil否則引用仍然存在導致下次無法用nil做是否有值的判斷

    - 實例變量要在每次賦值時要先釋放當前引用的對象再賦值,并retain一下保證引用計數為1

    - 對于有retain參數的property,直接使用”.”賦值時系統會自動釋放當前引用對象再賦值,并自動retain一下

    - dealloc中要對所有實例變量調用release,對于有retain參數的property只需要調用self.theProperty = nil即可,系統會去做釋放

    - delegate的property通常設為assign,如果設為retain的話會有循環引用的問題,比如aView.delegate = self時會把self retain一下,在aView的dealloc中會把delegate release,但是由于self的引用永遠不會小于1,所以導致aView和self的dealloc永遠都不會被執行,都永遠駐留內存造成泄露。所以如果要設為retain的話一定要確保不會造成循環引用問題。

    - 在UIViewController中的viewDidUnload中要釋放掉局部變量,調用release并設為nil,有時系統收到內存警告時會自動調用這個函數來釋放一些內存空間

    - 系統內存警告的回調中要釋放掉內存中的緩存和其他可釋放的東西,以免造成crash

    - 使用UITableView時要把cell設置為重用的,并且要確保確實寫得是重用的,有的人寫完的結果相當于還是每次都重建cell,導致效率低下

    - 使用UIScrollView時要自己控制釋放掉目前不顯示的內容,尤其是圖片,考慮圖片大小和瀏覽效果可以加載當前顯示頁兩邊的3-5頁內容

    - 圖片需要做緩存,尤其是本地文件系統緩存,可以放到Library/Cache目錄中,這個目錄系統有專用的常量來獲取,比如:

    這里是一個小例子闡釋前幾條基本原則:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    - (void)aFunction{
    //創建一個局部變量view
    UIView *view = [[UIView alloc] init];
    // 賦值給實例變量theView
    [theView release]; //先釋放一下當前引用的變量
    theView = [view retain]; //給實例變量賦值時需要retain一下
    // 如果theView是一個有retain屬性的property
    self.theView = view; //不需要先釋放,也不需要調用retain,系統會自動做,所以一定不能這樣寫self.view = [[UIView alloc] init];,這樣的話創建的view會被retain兩次,造成泄露,對于這種可以先創建一個局部變量,給self.view賦值后再釋放
    [view release]; //要及時釋放局部變量
    }
    - (void)dealloc{
    //釋放局部變量
    [theView release];
    //如果theView是一個有retain屬性的property,也可以這樣寫
    self.theView = nil;
    [super dealloc];
    }
    posted @ 2012-07-05 17:05 writegull 閱讀(1236) | 評論 (1)編輯 收藏

    今天測試程序時發現一個奇怪的現象,我在關于頁面中想顯示圖片icon文件,可是怎么調試都不顯示。后來加載其它圖片則顯示正常。

    我分析原因是蘋果對程序訪問icon文件做了限制,所以不能正常顯示

    解決方案:把icon文件復制一份,改成其它名字,加載改名字的文件,問題成功解決!
    posted @ 2012-06-26 16:10 writegull 閱讀(354) | 評論 (0)編輯 收藏

    今天開發中使用字符串分割函數split(),發現:
            String s = "upload/20120416135915265.sql";
            System.out.println(s.split("."));
    輸出的并不是想要的結果,之后輸出:
            System.out.println(s.split(".").length);
    結果竟然是0!!!
    突然想到轉義字符,于是:  
            System.out.println(s.split("\\."));
    OK啦!!!
    原來在java中函數split(".")必須是是split("\\.")。
    posted @ 2012-06-24 09:27 writegull 閱讀(31369) | 評論 (4)編輯 收藏

    感謝蚊帳的投遞
    新聞來源:伯樂在線
    很多人表面上看著老實巴交的,實際上內心比誰都好強、自負、虛榮、甚至陰險。工作中見的多了,也就習慣了。有一些人,什么事都寫在臉上,表面上經常得罪人,甚至讓人討厭。但是他們所表現的又未必不是真性情。

    我相信大多數人都看過《豪門夜宴》這部香港老電影。張學友、梁朝偉演的拍馬屁的場景太有意思了,其中有這樣一段:當兩馬屁精幫老板說出主意,老板馬上叫 停,然后拍一下腦門:“哦。。。我想到了。。。”,把別人的idea當成自己的說出來。我在工作中還真不止一次遇到這種事,我提出來的想法老被別人拿來當 作自己的原創,當然個別小偷洋洋得意的描述自己的‘原創’時還會偷偷的瞄我一下,看我有沒有不高興,,,我并沒有不高興,大概是因為想到那個電影段子被逗 樂了。天下學術都一大抄,更何況什么想法,什么創新,通通都是浮云!

    君不見創新項目一大堆,都被抄死化成灰
    ! 但是不能因此而放棄創新,大地不可以因為有畜牲吃草而不復生機,山泉也不會因為有王八偷水而不冒活水。第一點:保持有一顆生機靈動的心。因為這個東西是別 人偷不走的,也是最大的財富。如果你不俱備這個東西,那么請用一顆善心去培養它。人人都是耀眼的珍珠,只是被灰塵蒙蔽了眼。

    記得剛進公司那會踏踏實實工作,滿懷激情。不過第一周就把自己的頂頭上司給得罪了,我并沒有做錯什么,記得當時還有同事幫我說話,后來慢慢發現他是一個相 當自負的人。不過話說回來搞技術的在技術方面有幾個不自負。這次事之后我并沒有學乖。對于別人設計不合理的地方,我會指出來,并提出該如何做。對于語言基 礎薄弱,設計模式薄弱的同事,我會好心推薦一些書籍,,,,,,本是好心幫助別人,卻并沒有得到別人的感激。相反,大部分會覺得你看不起他們,更有甚者不但不會反思改進自己的弱點,反而打擊報復看不起他的人。所以千萬請記住第二點:不可以隨便提意見。特別是新人,請務必保持低調。這一點在日常生活中同樣實用。

    與第二點相對,第三點:經常肯定、稱贊同事的成果和進步。注意這里并不是要你去巴結討好。常常看到別人的優點并加以肯定也是比較正面和必要的行為。這樣不但可以增進關系,更重要的是可以鼓勵別人。

    我一直認為一個人沒有自知之明就等同于垃圾。要隨時隨地知道自己小名叫什么。話說我有一位同事,基礎相當薄弱,但又太愛去表現自己,經常到處指指點點,生怕別人不知道自己是“高手”。由于老開“黃腔”常被人背后偷笑而不自知。

    第四點:低調一些,謙虛一些不斷提高自己的實力。進公司時所在部門是剛成立的,工作一段時間后,我發現由于部門團隊開發的特殊性很有必要在公司通用編碼規范基礎上再制定內部的編碼和設計規范,于是向上司 提了我的想法,他同意了。于是我起草了一個內部規范手冊。但是執行過程中,有人按手冊來,有人不按手冊來。產生這種局面的根本原因是上司并沒有支持。

    在這 里沒有必要分析原因,直接給出要記住的第五點:不在其位,不言其事。做好本職工作就好。無論在什么地方,開明而大度的好上司并不多,所以這一點相當重要。

    經常在開會討論設計方案的時候,會發現一個非常有意思的事情。會議本來進行的正常而和諧,當輪到某個優秀的人上去講的時候,氣氛一下子不和諧了。大家都迫 不及待的想挑出他的毛病,就算沒理解別人的意思也會亂說一氣。秀才遇到兵了,,,,,,以前實習的公司中也時常見到這種情況。每當此時我都會在下面感嘆: 好一幅百鳥鳳圖。請記住第六點:木秀于林風必摧之,要懂得韜光養晦,不要時時鋒芒畢露

    公司里有個老員工,實力比較強,算是一個獨擋一面的人。不過在一次部門改組中并沒有得到提升,被提升為經理的反而是一個能力不算太強,還比他晚來的人。在此之前我聽到過那個老員工在和其它公司接觸并準備跳槽的傳聞。第七點:不到最后一刻,自己離職的想法不可以和公司內部任何人分享。因 為站在公司的角度來看你已經不忠誠了,不愿意重用你了。但是在員工自己的立場來看,公司給的待遇與能力不成正比、不認同公司的文化、想換個環境、想要一個 更好的發展機會,這些都是合情合理的。我個人發現一個規律:在一般的公司里,凡是堅持到最后經受住了“考驗”的“忠誠”者,往往都是沒什么能力的庸才。如 果你是一個公司高層管理者,那么你會如何對待類似的“叛徒”呢?

    第八點:不得罪辦公室里的女人。此處女人定義如下:(1)國寶級的女程序員; (2)女測試,這個不稀罕 ;(3)女助理,到處都是;(4)女上司,這個最要命!   男的處在一起,有什么沖突矛盾吵吵過了就忘了。但女的不一樣,一不小心就得罪了,后邊一逮到機會就會擺你一道,還沒完沒了!最要命的是:背地里狠狠的陰 你,而當著面表現得像你溫馨的親人。

    我們研發中心有個領導很可愛,不太清楚上面給他灌了什么迷魂湯,以至于自己職位被降了,職權被銷了很大一部分,還整天手舞足蹈高興得很。事后一兩個月才反 應過來不對勁,然后整天愁眉苦臉、、、、、、以這種交際反應的速度,被撤是必然的事情,確實不適合搞管理。技術男大多腦袋是‘方’的,不太善與處理人際關 系。第九點:加強交際能力。程序員大多還算是聰明的,平常稍稍注意一下就沒什么大問題。不過不要自我感覺良好,我們公司有個工作了十多年的IT男,幾年前就開始被派除去和客戶溝通,丫的,至今那一口吞吞吐吐的蹩腳的普通話讓人聽了就傷心。

    第十點:若無特殊情況,一定不要跨級匯報。這一點 細節很重要。某種意義上你的頂頭上司就是你的老板,直接決定了你的發展,你就是他手下的兵。并不是誰官大就聽誰的,要不然歷史上那么多兵變都不可能成功, 因為大家都只聽皇帝的,呵呵。從另一個方面講,你‘忠于’你上司的上司,他也不敢用你,因為誰知道提拔你之后,你會不會再越一次級?!!

    第十一點:要善于向上司匯報工作。國家干部是不是 人民的公仆本人不太清楚。但公司里那些大大小小的管理者一定是(如果不是這樣那他就不是一個好上司)!那群夾板男,看著是個官,其實過得很苦。既要應付好 上面的領導,又要充分調動下面群眾做出業績,整天搞得焦頭爛額。上面的唱白臉,那么夾板男就唱黑臉。總之挺不容易。他們的猜疑心很重!時常會懷疑下面的人 沒盡心工作。雖然一般公司都有什么任務分配管理系統,但是那東西遠遠不夠。你需要找準時機讓他清楚你工作進展,你所做出的努力。

    第十二點:不要輕易造成情緒污染。不要因為你一個人不高興,而讓別人都看你的臉色。要學會雪藏自己的情緒。你若是一個領導,那這一點就太要緊了。

    第十三點:一舉一動找準自己的位置、別人的位置。比如:吃飯時的座次,照相時的排列位置,群發郵件時收件人的排名順序,文檔作者的位置順序、、、、、、這些都很重要。《易經》中有講:明相位,立德業。要是你連自己在哪兒都不知道,你又如何到得了目的地。

    第十四點:沒有必要做一個憤青。剛畢業那會,我很憤青,看不慣這看不慣那。但是又能怎么樣呢?弱肉強食的本質從來沒有改變過,你要學會嘗試去理解這個社會,理解種種關系。到某個時候你會發現:一切理所當然。你若真的不滿意某個現狀,那么就去盡自己的能力去改變它。勢者,不均也!均則無勢。

    第十五點:記住別人的善,忘記別人的惡。一個人心 里不應該有太多仇恨,仇恨是別人扔給你的垃圾,你又不是垃圾桶,老裝著它做什么?在公司當算法工程師近三年了,別人怎么對我,我的心里跟明鏡似的一清二 楚。對我不好的人我并沒太在意,更別說去報復。相反,他們有事要我幫忙的時候,我總能真心實意的去幫,甚至主動幫忙解決問題。這是這幾年來,我對自己唯一 滿意的一點。我相信一句話:活著就是修行。但是你得清楚你修的是善行還是惡行。

    畢業三年了,看看走過的路,總覺的有點荒涼。確實真正明白了許多道理。感謝幫助過我的人,也感謝打擊過我的人。也許一個人只有親身經歷了困難才可能真正成長起來,由此我不得不感嘆造化的殘酷。

    posted @ 2012-06-20 10:03 writegull 閱讀(214) | 評論 (0)編輯 收藏

    主站蜘蛛池模板: 3344在线看片免费| 曰批视频免费30分钟成人| 色拍自拍亚洲综合图区| 日韩版码免费福利视频| 深夜a级毛片免费视频| 亚洲国产成人高清在线观看| 最近2019中文字幕免费看最新| 曰韩无码AV片免费播放不卡 | 国产亚洲?V无码?V男人的天堂| 精品无码人妻一区二区免费蜜桃 | 亚洲欧美日韩综合俺去了| 亚洲综合最新无码专区| 国产大片线上免费观看| 51午夜精品免费视频| 狠狠色香婷婷久久亚洲精品| 伊人婷婷综合缴情亚洲五月| 免费看美女裸露无档网站| 三级网站在线免费观看| 亚洲AV无码XXX麻豆艾秋| 亚洲国产精品第一区二区| 免费一级毛片在线观看| 在线观看H网址免费入口| 在线看片免费人成视频久网下载 | 亚洲第一精品在线视频| 国产午夜免费秋霞影院| 99国产精品永久免费视频| 成人国产精品免费视频| 色偷偷亚洲第一综合网| 亚洲伊人久久大香线蕉影院| 精品国产_亚洲人成在线高清| 日本特黄特黄刺激大片免费| 亚洲免费福利视频| 成人免费区一区二区三区| 黄页免费视频播放在线播放| 亚洲av午夜精品无码专区| 亚洲人成在线播放网站岛国| 在线精品亚洲一区二区小说| 免费人成年激情视频在线观看 | 在线视频免费国产成人| 青青在线久青草免费观看| 久久精品电影免费动漫|