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

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

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

    一點(diǎn)一滴,編程人生

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      69 隨筆 :: 0 文章 :: 25 評(píng)論 :: 0 Trackbacks

    2012年5月3日 #

    今天為了這個(gè)問題了忙乎了一整天,特此記錄下,希望對(duì)有遇到同樣問題的同學(xué)有幫助。事情的經(jīng)過是這樣的,原先使用atomikos一直把數(shù)據(jù)源用jndi配置到tomcat的context.xml下,一直這么用沒有出現(xiàn)問題,配置如下
        <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" />

    最近項(xiàng)目要遷移到maven下,所以把context.xml的數(shù)據(jù)源配置挪到了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>
    因?yàn)樯厦孢@個(gè)配置我是照搬網(wǎng)上的,所以覺得沒有問題,可是項(xiàng)目啟動(dòng)后,用此數(shù)據(jù)源提交事務(wù)時(shí)確報(bào)以下錯(cuò)誤:

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

    一開始我以為maven配置的mysql-connector-java驅(qū)動(dòng)版本不對(duì),或是atomikos版本不對(duì),可是不管如何換版本都不行,就快要瘋了的時(shí)候,我看到了原先jndi方式中有這么一行代碼
    xaProperties.pinGlobalTxToPhysicalConnection="true"
    就因?yàn)槿鄙偕厦孢@句話導(dǎo)致了問題,上網(wǎng)查資料,據(jù)說是mysql xa bug,有興趣的可以看如下連接,最后配置如下:
           <property name="xaProperties">  
                
    <props>
                    
    <prop key="pinGlobalTxToPhysicalConnection">true</prop>  <!-- mysql必須配置此參數(shù),要不然無法提交事務(wù) -->
                    
    <prop key="url">xxxx</prop>  
                    
    <prop key="user">xxx</prop>
                    
    <prop key="password">xxxx</prop>
                
    </props>
            
    </property> 



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

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

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


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


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

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

    # redis-cli shutdown 關(guān)閉



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

    6.給redis設(shè)置密碼或者干脆設(shè)置成只能內(nèi)網(wǎng)訪問

    7.通過top命令發(fā)現(xiàn)了幾個(gè)可疑的程序



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


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


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


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


    12.通過nethogs軟件可以按進(jìn)程實(shí)時(shí)統(tǒng)計(jì)網(wǎng)絡(luò)帶寬利用率,這個(gè)用來看是否存在DDOS攻擊最好不過了。

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

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

    今天在修改server.xml調(diào)試程序時(shí),遇到下面這個(gè)問題,clean,重啟都不好使。

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

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

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

    這個(gè)問題似乎只有在手動(dòng)改變系統(tǒng)狀態(tài)欄級(jí)別的情況才會(huì)出現(xiàn)

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

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

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

    - (void) viewDidAppear:(BOOL)animated {

        [super viewDidAppear:animated];

        self.window.windowLevel = UIWindowLevelNormal;

    }

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

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

    最近在做Apple的IOS開發(fā),有開發(fā)靜態(tài)庫的需求,本身IOS的開發(fā),只允許靜態(tài)庫或者Framework。在Xcode上沒有找到允許編譯,如同Android上的*.so和Win32上的dll這樣的說法。不過Framework這樣的框架,估計(jì)也是類似動(dòng)態(tài)庫的實(shí)現(xiàn),不過沒有具體研究過,后續(xù)繼續(xù)深入研究。

    我這個(gè)文檔的靜態(tài)庫的開發(fā)是基于Xcode4.2和iOS SDK5.0編寫的。Xcode4跟之前的Xcode3還是有不少的差別的。

    下面就簡(jiǎn)單寫一個(gè)靜態(tài)庫和一個(gè)調(diào)用靜態(tài)庫的例子。

    靜態(tài)庫的編寫:

    1.靜態(tài)庫工程的建立:

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


    2.工程建立

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



    3.編譯前準(zhǔn)備

    這里分release與debug版本,需要設(shè)置一下


    4.OK,編譯

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

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

           

    5.ok

    在右邊 這個(gè)文件上右鍵Open In Finder。這時(shí)候我們打開了一個(gè)文件夾,里面有一個(gè)libPrint.a。后面我們繼續(xù)編寫一個(gè)調(diào)用這個(gè)libPrint.a的App。但是這個(gè)App在編譯時(shí)候會(huì)出錯(cuò),通過這個(gè)錯(cuò)誤的解決,說明Xcode的一些編譯相關(guān)的東西。這里,我們?cè)赾ommand下面根據(jù)路徑找到這個(gè)文件,用這個(gè)非常重要的命令查看一下這個(gè)lib的信息!

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

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

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

    我們手動(dòng)打開這個(gè)路徑:可以看到如下信息:Release-iphoneos


    這個(gè)是給真機(jī)用的,那我們要給模擬器和真機(jī)封裝的靜態(tài)庫應(yīng)該都能用才好。這個(gè)下面介紹!!!!!  


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

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


    6.建立一個(gè)調(diào)用這個(gè)libPrint.a的應(yīng)用

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



    7.插入了h和a文件后

    我們就可以在control里面調(diào)用這個(gè)libPrint.a 函數(shù)了。

    #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

    {

        

        //調(diào)用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,編譯運(yùn)行這個(gè)應(yīng)用程序。

    編譯出現(xiàn)錯(cuò)誤了。這個(gè)就是這篇文檔的關(guān)鍵了。主要就是為了介紹編譯靜態(tài)庫相關(guān)的東西。



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

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


    然后我們?cè)倏纯催@個(gè)目錄與第4條所示的目錄有什么不同! 同樣也有一個(gè)libPrint.a文件。



    10.錯(cuò)誤原因分析

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

    11.合并.a文件,制作通用靜態(tài)庫

    這二個(gè)庫一個(gè)是用于真機(jī)運(yùn)行的一個(gè)是用于模擬器運(yùn)行的.其實(shí)我們可以利用lipo將這二個(gè)文件打包成一個(gè)通用的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 

    可以看到如下信息:


    如上,你已經(jīng)看到了,它具備了i386和arm7的條件。 現(xiàn)在我們這個(gè)靜態(tài)庫,支持的構(gòu)架已經(jīng)是armv7 i386了。


    13.ok,經(jīng)過上述步驟后

    這個(gè)通用庫生成后,我們將原來,調(diào)用這個(gè)庫進(jìn)行替換一下,在進(jìn)行編譯,成功編譯,運(yùn)行結(jié)果如下所示:


    posted @ 2012-10-09 18:14 writegull 閱讀(647) | 評(píng)論 (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(打開調(diào)試)

    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) | 評(píng)論 (0)編輯 收藏

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

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

    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];


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

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

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

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

    就這么多了,我仔細(xì)想了一下,為什么我的應(yīng)用從其中一條通知打開的時(shí)候,其它的通知消失掉:
    因?yàn)槲以诔绦騿?dòng)的時(shí)候就執(zhí)行了第一條:)

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

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

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

    1.圖標(biāo)的圓角效果是系統(tǒng)自動(dòng)加上的。

    2.光暈效果雖然也是系統(tǒng)加上的,但可以通過程序中設(shè)置參數(shù)來去掉內(nèi)建光暈效果。

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

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

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

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

    - alloc, copy, retain會(huì)把引用計(jì)數(shù)+1

    - release會(huì)把引用計(jì)數(shù)-1

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

    - 實(shí)例變量要在每次賦值時(shí)要先釋放當(dāng)前引用的對(duì)象再賦值,并retain一下保證引用計(jì)數(shù)為1

    - 對(duì)于有retain參數(shù)的property,直接使用”.”賦值時(shí)系統(tǒng)會(huì)自動(dòng)釋放當(dāng)前引用對(duì)象再賦值,并自動(dòng)retain一下

    - dealloc中要對(duì)所有實(shí)例變量調(diào)用release,對(duì)于有retain參數(shù)的property只需要調(diào)用self.theProperty = nil即可,系統(tǒng)會(huì)去做釋放

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

    - 在UIViewController中的viewDidUnload中要釋放掉局部變量,調(diào)用release并設(shè)為nil,有時(shí)系統(tǒng)收到內(nèi)存警告時(shí)會(huì)自動(dòng)調(diào)用這個(gè)函數(shù)來釋放一些內(nèi)存空間

    - 系統(tǒng)內(nèi)存警告的回調(diào)中要釋放掉內(nèi)存中的緩存和其他可釋放的東西,以免造成crash

    - 使用UITableView時(shí)要把cell設(shè)置為重用的,并且要確保確實(shí)寫得是重用的,有的人寫完的結(jié)果相當(dāng)于還是每次都重建cell,導(dǎo)致效率低下

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

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

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

    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{
    //創(chuàng)建一個(gè)局部變量view
    UIView *view = [[UIView alloc] init];
    // 賦值給實(shí)例變量theView
    [theView release]; //先釋放一下當(dāng)前引用的變量
    theView = [view retain]; //給實(shí)例變量賦值時(shí)需要retain一下
    // 如果theView是一個(gè)有retain屬性的property
    self.theView = view; //不需要先釋放,也不需要調(diào)用retain,系統(tǒng)會(huì)自動(dòng)做,所以一定不能這樣寫self.view = [[UIView alloc] init];,這樣的話創(chuàng)建的view會(huì)被retain兩次,造成泄露,對(duì)于這種可以先創(chuàng)建一個(gè)局部變量,給self.view賦值后再釋放
    [view release]; //要及時(shí)釋放局部變量
    }
    - (void)dealloc{
    //釋放局部變量
    [theView release];
    //如果theView是一個(gè)有retain屬性的property,也可以這樣寫
    self.theView = nil;
    [super dealloc];
    }
    posted @ 2012-07-05 17:05 writegull 閱讀(1236) | 評(píng)論 (1)編輯 收藏

    今天測(cè)試程序時(shí)發(fā)現(xiàn)一個(gè)奇怪的現(xiàn)象,我在關(guān)于頁面中想顯示圖片icon文件,可是怎么調(diào)試都不顯示。后來加載其它圖片則顯示正常。

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

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

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

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

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

    君不見創(chuàng)新項(xiàng)目一大堆,都被抄死化成灰
    ! 但是不能因此而放棄創(chuàng)新,大地不可以因?yàn)橛行笊圆荻粡?fù)生機(jī),山泉也不會(huì)因?yàn)橛型醢送邓幻盎钏?span style="margin: 0px; padding: 0px; font-weight: bold; ">第一點(diǎn):保持有一顆生機(jī)靈動(dòng)的心。因?yàn)檫@個(gè)東西是別 人偷不走的,也是最大的財(cái)富。如果你不俱備這個(gè)東西,那么請(qǐng)用一顆善心去培養(yǎng)它。人人都是耀眼的珍珠,只是被灰塵蒙蔽了眼。

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

    與第二點(diǎn)相對(duì),第三點(diǎn):經(jīng)常肯定、稱贊同事的成果和進(jìn)步。注意這里并不是要你去巴結(jié)討好。常常看到別人的優(yōu)點(diǎn)并加以肯定也是比較正面和必要的行為。這樣不但可以增進(jìn)關(guān)系,更重要的是可以鼓勵(lì)別人。

    我一直認(rèn)為一個(gè)人沒有自知之明就等同于垃圾。要隨時(shí)隨地知道自己小名叫什么。話說我有一位同事,基礎(chǔ)相當(dāng)薄弱,但又太愛去表現(xiàn)自己,經(jīng)常到處指指點(diǎn)點(diǎn),生怕別人不知道自己是“高手”。由于老開“黃腔”常被人背后偷笑而不自知。

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

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

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

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

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

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

    第十點(diǎn):若無特殊情況,一定不要跨級(jí)匯報(bào)。這一點(diǎn) 細(xì)節(jié)很重要。某種意義上你的頂頭上司就是你的老板,直接決定了你的發(fā)展,你就是他手下的兵。并不是誰官大就聽誰的,要不然歷史上那么多兵變都不可能成功, 因?yàn)榇蠹叶贾宦牷实鄣模呛恰牧硪粋€(gè)方面講,你‘忠于’你上司的上司,他也不敢用你,因?yàn)檎l知道提拔你之后,你會(huì)不會(huì)再越一次級(jí)?!!

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

    第十二點(diǎn):不要輕易造成情緒污染。不要因?yàn)槟阋粋€(gè)人不高興,而讓別人都看你的臉色。要學(xué)會(huì)雪藏自己的情緒。你若是一個(gè)領(lǐng)導(dǎo),那這一點(diǎn)就太要緊了。

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

    第十四點(diǎn):沒有必要做一個(gè)憤青。剛畢業(yè)那會(huì),我很憤青,看不慣這看不慣那。但是又能怎么樣呢?弱肉強(qiáng)食的本質(zhì)從來沒有改變過,你要學(xué)會(huì)嘗試去理解這個(gè)社會(huì),理解種種關(guān)系。到某個(gè)時(shí)候你會(huì)發(fā)現(xiàn):一切理所當(dāng)然。你若真的不滿意某個(gè)現(xiàn)狀,那么就去盡自己的能力去改變它。勢(shì)者,不均也!均則無勢(shì)。

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

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

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

     感謝雷鋒網(wǎng)的投遞

    編者按:本文作者郭子威,前網(wǎng)易網(wǎng)站產(chǎn)品部總監(jiān),想要聯(lián)系的讀者可以在微博上@純銀V。其實(shí),這篇文章是打算寫“大公司抄你腫么辦?”很明顯騰訊最典型嘛,以至于我還在網(wǎng)易的時(shí)候,Boss也問我,騰訊抄你怎么辦?此時(shí)屢屢有一股邪火在胸口燃燒著,想大吼一聲:騰訊抄我怎么辦?老子跳槽去騰訊!最后我還是選擇了創(chuàng)業(yè)。


    我在網(wǎng)易5年,一直帶業(yè)務(wù)部門,從內(nèi)容總監(jiān)轉(zhuǎn)職產(chǎn)品總監(jiān),算得上資深中層吧。網(wǎng)易做產(chǎn)品的環(huán)境,放在業(yè)內(nèi)大約是中等偏上,它的好處別家未必有,弊端 則是寰球同此涼熱。年初跟VC談天使融資的時(shí)候,對(duì)方大統(tǒng)領(lǐng)換了一個(gè)問法:如果網(wǎng)易抄你怎么辦?我很吃驚地回答,如果留在網(wǎng)易就能把這個(gè)項(xiàng)目做出來,我還 創(chuàng)什么業(yè)?難道你以為我創(chuàng)業(yè)是為了發(fā)財(cái)、專權(quán),或者給自己戴上SB風(fēng)格的CEO頭銜?

    那么大公司到底是真老虎還是紙老虎?我得從大公司業(yè)務(wù)運(yùn)作的常識(shí)說起。

    ▎部門背景
    大公司是一個(gè)籠統(tǒng)的概念,由若干個(gè)事業(yè)部>大部門>中小部門>項(xiàng)目組構(gòu)成。其中戰(zhàn)斗力過硬的項(xiàng)目組是少數(shù),王牌軍不足十分之一,而水貨項(xiàng)目組的占比至少超過一半。
    我們品頭論足說XX公司的產(chǎn)品做得很好,其實(shí)是某幾個(gè)項(xiàng)目組實(shí)力非凡。如果不與他們正面對(duì)抗,其他組做產(chǎn)品也就是60出頭的平均分。難道你連產(chǎn)品70分都沒有自信?沒這自信你還做個(gè)屁啊。

    所以在忌憚大公司之前,先摸摸底,和你競(jìng)爭(zhēng)的大公司項(xiàng)目組歸屬在哪個(gè)部門下面,它又是什么背景。正如我以前對(duì)某大公司很是好奇,為什么一部分業(yè)務(wù)很爛,另一部分很贊??jī)?nèi)部人士答:因?yàn)樗鼈兎謱儆趦蓚€(gè)不同的事業(yè)部,一隊(duì)落魄邊沿化,另一隊(duì)則是常勝王牌軍。

    ▎業(yè)務(wù)關(guān)聯(lián)
    有些時(shí)候,你發(fā)現(xiàn)某大公司和你進(jìn)入了同一個(gè)競(jìng)爭(zhēng)領(lǐng)域。別著急,先看看做這個(gè)項(xiàng)目的部門,主營業(yè)務(wù)是否和該項(xiàng)目在同一條中軸線上。

    由于野心的驅(qū)動(dòng),部門主管常常會(huì)批準(zhǔn)一些和主營業(yè)務(wù)關(guān)系不大的,想象空間又很大的項(xiàng)目,妄想別錯(cuò)過金礦。然而這只是投石問路,買張彩票,主要的資源 仍然在主營業(yè)務(wù)線集中,更不可能忍受平緩的增長曲線(掘金心態(tài)嘛,哪怕掘到銅礦也會(huì)斷然放棄)。外界看見“XX公司悍然進(jìn)入XX領(lǐng)域”……屁嘞,只有做這 個(gè)項(xiàng)目的團(tuán)隊(duì)甘苦自知,時(shí)間緊/期待高/投入少,不掛基本上不可能。
    緊接著上一條,對(duì)大公司對(duì)手的部門背景作詳細(xì)調(diào)查,或許能解除你對(duì)那個(gè)龐然大物的恐懼心。如我以前在網(wǎng)易門戶做攝影分享社區(qū),第一年里,有8個(gè)月分到了1 位工程師的工時(shí);接下來一年總算有3位工程師了,其中2位又是實(shí)習(xí)生。我熬了整整3年,3年吶,才熬到基本夠用的技術(shù)人員配置,那時(shí)市場(chǎng)機(jī)遇早已消失不 見。

    ▎公共資源
    大公司的公共資源往往包括如下部分:UED、QA、推廣位,集中調(diào)度以提高利用率。有時(shí)候運(yùn)營人員也是公共資源,有時(shí)候更慘一點(diǎn),連程序員都是公共資源。 雖然家底殷實(shí),公共資源攤薄到每個(gè)項(xiàng)目上便很寒磣,所謂僧多粥少。項(xiàng)目經(jīng)理可能把自己有招聘權(quán)的人給湊齊了,但他還得腆著臉找各個(gè)公共部門老大要資源,有 時(shí)是懇求,有時(shí)是苦苦哀求。

    跪下來舔鞋都提不上工單的時(shí)候,我以前還使過一茅招,搞點(diǎn)部門經(jīng)費(fèi),請(qǐng)前端組的同事私底下幫忙切圖……當(dāng)作付費(fèi)外包來對(duì)待。那時(shí)視覺稿已經(jīng)堆了個(gè)把月,沒法推進(jìn)一步。類似的木桶效應(yīng)多如牛毛,幾乎每個(gè)大公司項(xiàng)目都會(huì)遇到,偏偏使不上力,被短板卡得上氣不接下氣。

    即便搶到了(勉強(qiáng)夠用的)公共資源,你還得面對(duì)分配資源的隨機(jī)性問題。比如說小清新風(fēng)格的產(chǎn)品,能分到擅長此風(fēng)格的設(shè)計(jì)師嗎?不能,誰空下來分派 誰。擅長小清新的設(shè)計(jì)師當(dāng)然也有,人家正在別的項(xiàng)目組,即便那個(gè)項(xiàng)目惡俗,設(shè)計(jì)師也很不開心,做到一半怎可能中途離場(chǎng)。所以我以前跟PM說:有人幫你做就 快去燒香還愿,有推廣位到手就感恩熱淚盈眶,你還挑啥子挑喃?十幾個(gè)部門幾十個(gè)項(xiàng)目都鬧著要最好的最合適的,你讓UED情何以堪喃?

    由于公共部門采用派單制,大部分人員缺乏項(xiàng)目歸屬感,榮譽(yù)感,他既無法全程參與,也很難真正融入項(xiàng)目組里邊。座位經(jīng)常隔了幾百米,一周只能碰頭兩三 面,甚至因?yàn)閰⑴c時(shí)間短暫,就連對(duì)產(chǎn)品的理解也比較淺,應(yīng)付完這個(gè)應(yīng)付那個(gè),“應(yīng)付了事”的心態(tài)極為常見。往往只有項(xiàng)目經(jīng)理把產(chǎn)品當(dāng)兒子看,別人都當(dāng)成牽 到自己家里來串門的鄰居小孩兒。

    更能理解的是,公共部門這個(gè)月做A項(xiàng)目的單,下個(gè)月做B的單,這個(gè)月A項(xiàng)目組請(qǐng)飯請(qǐng)求加班,下個(gè)月B請(qǐng)飯請(qǐng)求加班。項(xiàng)目上線你們倒是領(lǐng)功/打賞/休 假,下一個(gè)項(xiàng)目組又聲淚俱下說這單子特別重要,非得拉兄弟一把不可。這豈不是“無窮無盡的加班”“無窮無盡的拼這一仗”?你們少來誑老子……
    曾見以前合作的設(shè)計(jì)師,私底下為自己做了款玩票的APP,比當(dāng)初花兩三個(gè)月為我們部門設(shè)計(jì)的APP,起碼高出兩個(gè)等級(jí)。當(dāng)真刮目相看。

    ▎KPI

    KPI是萬惡的,沒有KPI又是萬萬不能的。

    所謂KPI,屬于體制的一部分,也是大企業(yè)病的一部分。這個(gè)世界上不靠譜的人和項(xiàng)目占多數(shù),衡量創(chuàng)業(yè)團(tuán)隊(duì)是否靠譜的標(biāo)準(zhǔn)很簡(jiǎn)單——剩者為王。這是一款生存游戲。

    隨著公司活下來并且膨脹起來,自然淘汰的篩選法很快失了效。創(chuàng)業(yè)意味著高風(fēng)險(xiǎn)和高收益,當(dāng)創(chuàng)業(yè)團(tuán)隊(duì)成長為中型公司,大公司,則個(gè)人的風(fēng)險(xiǎn)降低(收入 增加,薪資職位穩(wěn)定),收益也降低(期權(quán)減少甚至沒有),容易滋生更多輕浮的冒險(xiǎn),拿公司的錢去玩自己的票,修筑各種爛尾樓。如果不用KPI來制衡,十八 般瞎折騰便掏空公司資源。人家旱澇保收底薪很高的,人家從折騰中賺到了經(jīng)驗(yàn)值,就算引咎辭職,下一份工作還能拿到更高薪水的,而你老板呢,資產(chǎn)耗光只能去 擺地?cái)偭恕?/p>

    鑒定和約束各種瞎折騰的管理手段之一,我們稱之為項(xiàng)目KPI,即階段性的項(xiàng)目考核。在這個(gè)過程中證明自己靠譜,項(xiàng)目有戲,公司才會(huì)繼續(xù)支持你。以我 所見,雖有不少被KPI整死的好項(xiàng)目,但95%以上被涮掉的,確為次品,事后一齊流淚控訴KPI之惡貫滿盈,覺得失敗原因是“公司不給支持”。問題是怎么 證明你和這個(gè)項(xiàng)目值得更多的支持?怎么證明你是有可能成功那5%,而不是注定失敗的95%?

    老板畢竟不是天網(wǎng),他不可能什么都懂,尤其對(duì)新拓展的業(yè)務(wù),一旦超出了高層的成功經(jīng)驗(yàn)領(lǐng)域,只能靠KPI來判斷項(xiàng)目前景。這同時(shí)意味著[要命的]公 司對(duì)項(xiàng)目缺乏耐心和遠(yuǎn)見。若不能看到短期數(shù)據(jù)利好,則支持度快速下降,資源供給減少,方向盤立刻打到一條名為“黃泉”的路上。預(yù)見到滅頂之災(zāi)又會(huì)干擾項(xiàng)目 經(jīng)理的判斷,往往使些目光短淺,飲鴆止渴的茅招出來,茍且保得眼前性命。

    ▎高層干預(yù)

    剛才提到大公司對(duì)新業(yè)務(wù)缺乏耐心和遠(yuǎn)見,這根子還在公司高層身上。所謂高層,最低也是管轄?zhēng)装偃说姆矫娲髥T,通常從VP起計(jì)。能做到大公司高層必有 過人之能,不幸人過30歲后對(duì)新領(lǐng)域的學(xué)習(xí)能力直線下降,再加上行政事務(wù)纏身,無法專注于業(yè)務(wù)。故而對(duì)于市場(chǎng)拓展,大部分高層混合了視野狹窄與剛愎自用這 兩種特質(zhì),必然大量依賴KPI管理。

    反過來看,如果高層瞄準(zhǔn)了某個(gè)項(xiàng)目,下決心賭上一把呢,它就會(huì)得到更多的資源和寬容,初期KPI有可能壓根不設(shè),所有公共部門都圍著你打轉(zhuǎn)。高層力 挺可以解決掉60%的大企業(yè)病,作為創(chuàng)業(yè)團(tuán)隊(duì),遇到這樣的對(duì)手是件挺可怕的事情,還好它們只是極少數(shù),占比不足5%。而你會(huì)因?yàn)榇笄缣煲灿锌赡芟掠暾礉?鞋,就畏畏縮縮不敢出門嗎?

    何況高層的支持是一把雙刃劍,他會(huì)給你喂足糧草,釘好蹄鐵,同時(shí)也給你戴上嚼子,圈定方向甚至策略。那么高層指定的方向策略出錯(cuò)呢?恭喜,貴項(xiàng)目掛了。長官意志令如山,最怕長官是外行。

    另一些情況下,大公司項(xiàng)目因?yàn)橘Y源不足,資源錯(cuò)位而做砸,其實(shí)還是高層的決策影響。他認(rèn)為給這些支持已經(jīng)足夠看清前景,若是敗局,又何必豪賭下去。畢竟主營業(yè)務(wù)還賺錢嘛,還有得選擇,反倒是“沒得選擇”轉(zhuǎn)化為創(chuàng)業(yè)團(tuán)隊(duì)背水一戰(zhàn)的韌性所在。

    ▎齊心協(xié)力

    說句聽上去挺刺耳的話,大公司里很難談?wù)嬲凝R心協(xié)力。按我的理解,齊心協(xié)力的基石不是個(gè)人素質(zhì),而是成員都適合這個(gè)項(xiàng)目,喜歡這個(gè)項(xiàng)目,自然努力 團(tuán)結(jié)。可你加入某一家大公司,往往受其光環(huán)/福利/資歷的吸引,有個(gè)坑就猛往里跳,其后轉(zhuǎn)崗不易。做什么項(xiàng)目亦受到部門限制,自主權(quán)有限得很。
    換句話說,參與大公司項(xiàng)目組的,并不是最適合,最喜歡這個(gè)項(xiàng)目的人,而是項(xiàng)目經(jīng)理目前能搞到的人(調(diào)動(dòng)、招聘以及公共部門派單)。甚至項(xiàng)目經(jīng)理本人也是奉 命而為,或無奈抓鬮。驅(qū)動(dòng)工作的動(dòng)力是職業(yè)道德,季度考核,獎(jiǎng)金與功名,卻非你對(duì)這款產(chǎn)品的愛。老實(shí)承認(rèn),我自己即是一例。哪怕在網(wǎng)易加班極多,直到辭職 出來做有愛的產(chǎn)品,方才覺得過去皆是行尸走肉。

    而我目前的創(chuàng)業(yè)團(tuán)隊(duì)只有6個(gè)人,來自5家大公司(上市或即將上市)。你說大家放棄了高薪福利,穩(wěn)定工作,來上海做一款前途未卜的產(chǎn)品是為什么?當(dāng)然不是服了我的三尸腦神丸……

    于是我現(xiàn)在的項(xiàng)目速度比之前在網(wǎng)易快3倍,工作進(jìn)展有規(guī)劃,無管理,隊(duì)員的主動(dòng)性之強(qiáng),內(nèi)部合作的愉快與默契是過去從未經(jīng)歷過的。兩個(gè)字:“開心”。換回大公司,那得打多少雞血開多少動(dòng)員大會(huì)啊,最后有人還在會(huì)上睡著了。

    ▎人多嘴雜

    小團(tuán)隊(duì)?wèi){什么跟大公司競(jìng)爭(zhēng)呢?有人說是“專注”,有人說是“耐心”,有人說是“遠(yuǎn)見”。這些都對(duì),我還要補(bǔ)充一點(diǎn),小團(tuán)隊(duì)一定要比大公司犯更少的錯(cuò)。

    這句話聽上去挺莫名其妙的,大公司人才濟(jì)濟(jì),小團(tuán)隊(duì)?wèi){什么跟人家比正確率?回答很簡(jiǎn)單:人才濟(jì)濟(jì),同時(shí)也人多嘴雜。給項(xiàng)目提意見的人越多,執(zhí)行效率 越低,這是鐵一般的定律。尤其當(dāng)建議者中包括各級(jí)領(lǐng)導(dǎo)的時(shí)候,決斷就更加飄忽不定。你非得考慮上司的立場(chǎng),部門的立場(chǎng),微妙的公司政治環(huán)境,固然不乏真知 灼見,合攏在一起便成噪音干擾。大量時(shí)間花費(fèi)在報(bào)審/修改/開會(huì)/爭(zhēng)吵/寫文檔/走流程上面,行動(dòng)遲緩舉棋難定,更增加誤入歧途的概率。

    相比之下,小團(tuán)隊(duì)的快速?zèng)Q策,快速行動(dòng),正好擊中了大公司的軟肋。一款新產(chǎn)品出來,大公司實(shí)權(quán)派發(fā)現(xiàn)它起碼得2個(gè)月,看懂它2個(gè)月,立項(xiàng)組好隊(duì)還得 花2個(gè)月。再加上市場(chǎng)前景不明朗,在創(chuàng)新者大紅大紫之前,大公司愿意投入(冒險(xiǎn))的資源是極少的,試水而已,復(fù)制抄襲多于革新改良,保守跟隨多于銳意開 拓。結(jié)果一兩年過去了,創(chuàng)新者勇猛精進(jìn)已成氣候,大公司才回過神來,欲與之全力一搏。人家的前期積累已領(lǐng)跑市場(chǎng),后來者未必追趕得上。

    類似案例,多不勝數(shù)。創(chuàng)業(yè)者眼里唯一的好機(jī)會(huì),大公司看來卻只是1000個(gè)模糊不清的機(jī)會(huì)之一,拿捏不定。由此逆向思維的話,創(chuàng)業(yè)團(tuán)隊(duì)最好不要插入 大公司的主營業(yè)務(wù)去虎口奪食。人家苦心經(jīng)營多年,憑借對(duì)這塊市場(chǎng)的理解力和戒備心,會(huì)更快發(fā)現(xiàn)你,重視你,然后高層吹響號(hào)角擊潰你。但你去開辟新戰(zhàn)場(chǎng)呢, 大公司跟還是不跟,用多大力跟,往哪個(gè)方向走,它就很難統(tǒng)一內(nèi)部意見。

    ▎基因轉(zhuǎn)移

    人都艷羨大公司“資源多”,所謂資源,一半是人才資源,一半是海量用戶,即推廣資源。然而不常被提及的是,大平臺(tái)的團(tuán)隊(duì)基因/用戶構(gòu)成/用戶習(xí)慣,與新項(xiàng)目是否吻合。或者籠統(tǒng)點(diǎn)說,大平臺(tái)的資源優(yōu)勢(shì)是否能向新項(xiàng)目平滑過渡。

    我一直是“基因論”的支持者,公司實(shí)權(quán)派的個(gè)人偏好,決定了團(tuán)隊(duì)構(gòu)成與文化,進(jìn)而決定了主場(chǎng)優(yōu)勢(shì)與劣勢(shì)。正如APPLE在社交網(wǎng)絡(luò)幾戰(zhàn)皆敗,偉大如 Google也被Facebook壓得抬不起頭來。只是受到野心蠱惑,即便八字不合,大公司也會(huì)悍然進(jìn)入新領(lǐng)域(憑什么我不行),隨后又慘然退出(原來我 真不行)。

    比團(tuán)隊(duì)基因更令人惱火的,是用戶基因,即當(dāng)前用戶群的構(gòu)成與使用習(xí)慣。做產(chǎn)品經(jīng)常遇到“跨域”這個(gè)問題,借勢(shì)推廣也一樣。新項(xiàng)目的產(chǎn)品訴求,用戶構(gòu) 成,如果和母體在同一個(gè)域內(nèi),則資源優(yōu)勢(shì)平滑過渡,對(duì)競(jìng)爭(zhēng)者是致命的殺傷力。但其實(shí)……平滑過渡又是一件特別不多見的事情。有時(shí)新項(xiàng)目整個(gè)的跨域,比如騰 訊做拍拍,做朋友,導(dǎo)入損耗率驚人;有時(shí)大平臺(tái)向垂直市場(chǎng)細(xì)分,無法精準(zhǔn)過濾推廣目標(biāo),導(dǎo)入用戶良莠不齊得厲害,對(duì)于重視“氣質(zhì)、氛圍”的垂直市場(chǎng)則是拔 苗助長。

    以我之前做網(wǎng)易攝影為例,不推吧,在大公司做產(chǎn)品跟創(chuàng)業(yè)有多大區(qū)別,生怕浪費(fèi)了資源。推吧,不搭邊的人路過都來踩一腳,各種低端用戶、自拍用戶、審 美低下熱情萬丈的中老年用戶蜂擁而入,氛圍混亂,運(yùn)營成本指數(shù)級(jí)上升,最終受困多過受益。反倒是獨(dú)立攝影產(chǎn)品如圖蟲,用戶氣味相投而來,自然增長營造的社 區(qū)氣質(zhì)遠(yuǎn)勝從大平臺(tái)引流,氣質(zhì)恰恰又是社區(qū)的核心競(jìng)爭(zhēng)力。

    做產(chǎn)品,鮮有一夜暴富,尤其UGC,口碑帶動(dòng)增長才是最穩(wěn)健的方法。道理固然大路貨,KPI壓力下卻容易急于求成。母體供血一旦大量摻水,相當(dāng)于修 煉邪道武功,起步快而后力不濟(jì),很快會(huì)觸碰到天花板。這時(shí)大平臺(tái)所謂海量用戶,反倒成為盛滿鮮花的陷阱,涂抹蜜糖的慢性毒藥。好似小時(shí)候四環(huán)素治病,長大 后燦然一笑露出滿口黃牙。

    總之,在大公司里做產(chǎn)品的雷區(qū)多多。與內(nèi)部環(huán)境作戰(zhàn)所使的力氣,往往占到血槽的2/3強(qiáng),只留下不足1/3去對(duì)付市場(chǎng)。它抄你,不見得就打得過你。 它是個(gè)大家伙,但也喜歡把兩個(gè)腳拇指綁起來走路。在多數(shù)情況下,大公司的新項(xiàng)目只是全身掛滿鉆石鐐銬的,虛弱的巨人,被它抄死多半說明你太遜色,而不是大 家伙太兇惡。
    不過,這個(gè)行業(yè)的主流論調(diào)并不這么看。

    最近幾個(gè)月,各式各樣的人紛紛來問我,既然立志創(chuàng)新,大公司抄你怎么辦?

    對(duì)這個(gè)問題,我有各種具體的回答,但都不是真心話。只是面對(duì)某些人,比如投資人的時(shí)候,你跟他講虛的,會(huì)被當(dāng)成噴子,得表示我有明確的對(duì)策……其實(shí)對(duì)策易變,反倒是“產(chǎn)品哲學(xué)”這類虛的東西更加恒定。

    我真心的態(tài)度可以用三次自問自答來概括。

    1、我的產(chǎn)品質(zhì)量能不能打敗跟隨者,至少是與跟隨者各擅其長?

    如果做不到,這不是我被抄的問題,是我太挫,我認(rèn)栽。競(jìng)爭(zhēng)會(huì)刺激我提高產(chǎn)品質(zhì)量,未必是一件壞事。

    2、假定產(chǎn)品通過創(chuàng)新,打開一個(gè)新的細(xì)分市場(chǎng),這個(gè)市場(chǎng)是否足夠大,大到可以容納下多個(gè)競(jìng)爭(zhēng)者同時(shí)生存?

    如此則對(duì)手亦是隊(duì)友,我們一邊互相作戰(zhàn),一邊共同開墾荒地,聯(lián)手培育市場(chǎng)。即便最后我只拿到第三、第四的份額,也不錯(cuò)啊,誰規(guī)定創(chuàng)新者就非得獨(dú)吞整個(gè)市場(chǎng)不可——初夜權(quán)不等于占有權(quán),市場(chǎng)又不是從一而終的貞潔牌坊。

    3、除了用戶口碑之外,產(chǎn)品是否有具象化的的價(jià)值沉淀?

    比如黏性強(qiáng)的用戶關(guān)系,比如用戶留存的他看重的內(nèi)容,比如有忠誠度的優(yōu)質(zhì)內(nèi)容發(fā)布者,比如含金量與時(shí)效性較長的信息。這些沉淀即防御壁壘,從產(chǎn)品架構(gòu)階段就應(yīng)該提前考慮,決定了防守反擊的難度。

    所以別人來不來抄這種事情,我從來都是不大關(guān)心的,偶爾想想,從不憂慮。周鴻祎有句話說得很好,少盯著對(duì)手,多研究用戶。一天到晚擔(dān)心“騰訊抄我怎 么辦”?擔(dān)心有屁用啊,萬一產(chǎn)品做得不好,騰訊抄都不屑于抄,那得白白浪費(fèi)多少腦能量。我只管埋頭做自己的產(chǎn)品,洪興罩我去戰(zhàn)斗~

    換個(gè)角度看,哪怕比較倒霉,很快被大公司看得起并臨幸了,對(duì)手在高層力挺下全力以赴地復(fù)制并改良,它的基因剛好又平滑過渡……那么,我掛了。但產(chǎn)品 創(chuàng)新若是如我所愿地打開某個(gè)細(xì)分市場(chǎng),改善某類用戶體驗(yàn),作為始作俑者,老子傾家蕩產(chǎn),雖敗猶榮。“小小改變世界”比“賺到一千萬”更值得追求。

    正如我在微博里所說:阻擋你創(chuàng)新的是“無能”而不是“抄襲”,鼓舞你創(chuàng)新的是內(nèi)心驕傲而不是永遠(yuǎn)獨(dú)占鰲頭。

    文/benimaru zhang

    posted @ 2012-06-14 10:08 writegull 閱讀(229) | 評(píng)論 (0)編輯 收藏

    openURL的使用方法:[[UIApplication sharedApplication] openURL:[NSURL URLWithString:appString]];
    其中系統(tǒng)的appString有:
    1.Map http://maps.google.com/maps?q=Shanghai 
    2.Email mailto://myname@google.com 
    3.Tel tel://10086 
    4.Msg sms://10086 


    openURL能幫助你運(yùn)行Maps,SMS,Browser,Phone甚至其他的應(yīng)用程序。這是iPhone開發(fā)中我經(jīng)常需要用到的一段代碼,它僅僅只有一行而已。

    //打開地圖

    - (IBAction)openMaps {
    NSString*addressText = @"beijing"; //@"1Infinite Loop, Cupertino, CA 95014"; 
    addressText =[addressText stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]; 
    NSString*urlText = [NSString stringWithFormat:@"http://maps.google.com/maps?q=%@",addressText]; 
    NSLog(@"urlText=============== %@", urlText); 
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlText]];
    }

    //打開mail

    - (IBAction)openEmail { 

    [[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"mailto://devprograms@apple.com"]];

     }


    //撥打電話 

    - (IBAction)openPhone {

     [[UIApplication sharedApplication] openURL:[NSURLURLWithString:@"tel://8004664411"]]; 

    }

    使用這種方式撥打電話時(shí),當(dāng)用戶結(jié)束通話后,iphone界面會(huì)停留在電話界面。
    用如下方式,可以使得用戶結(jié)束通話后自動(dòng)返回到應(yīng)用:
    UIWebView*callWebview =[[UIWebView alloc] init];
    NSURL *telURL =[NSURL URLWithString:@"tel:10086"];// 貌似tel:// 或者 tel: 都行
    [callWebview loadRequest:[NSURLRequest requestWithURL:telURL]];
    //記得添加到view上
    [self.view addSubview:callWebview];

     還有一種私有方法:(可能不能通過審核)
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"telprompt://10086"]];


    //打開短信

    - (IBAction)openSms { 

    [[UIApplication sharedApplication] openURL:[NSURLURLWithString:@"sms://466453"]];

    }


    //打開瀏覽器

    -(IBAction)openBrowser { 

    [[UIApplication sharedApplication] openURL:[NSURLURLWithString:@"http://itunesconnect.apple.com"]]; 

    }

    posted @ 2012-06-13 17:09 writegull 閱讀(597) | 評(píng)論 (0)編輯 收藏

    北京時(shí)間6月9日消息,據(jù)外國媒體報(bào)道,谷歌在招聘員工和工程師時(shí),往往會(huì)問應(yīng)聘者有關(guān)技術(shù)方面的問題。蘋果卻大不相同,總是會(huì)司會(huì)問一些腦筋急轉(zhuǎn)彎風(fēng)格的問題,提出一些與硬件規(guī)格相關(guān)的問題,此舉似乎更多的是希望從潛在的員工身上挖掘更多的創(chuàng)造力。蘋果的這些問題不僅針對(duì)技術(shù)人員,甚至還針對(duì)銷售人員和其他特殊人員。以下就是美國網(wǎng)站GlassDoor提供的蘋果在面試應(yīng)聘人員的最有趣味性的15道題目:

      1、桌上放置了一部舊iPhone,你能看到哪些材料?

      招聘職位:產(chǎn)品設(shè)計(jì)工程師。

      在蘋果公司工作的多數(shù)員工,都會(huì)了解供應(yīng)鏈的成本事務(wù),以確保盡可能地減少生產(chǎn)手機(jī)的產(chǎn)品成本。蘋果手機(jī)是極具價(jià)格競(jìng)爭(zhēng)優(yōu)勢(shì)的產(chǎn)品,所以你必須知道如何從事控制成本相關(guān)的工作。因此,具備專業(yè)的材料及其屬性相關(guān)的經(jīng)驗(yàn)將有助于你在生產(chǎn)手機(jī)設(shè)備時(shí)降低成本。

      2、描述使用蘋果產(chǎn)品的情況

      招聘職位:銷售員。

      如果你想銷售蘋果產(chǎn)品,最好已經(jīng)是蘋果用戶。無論如何,蘋果不會(huì)聘用一個(gè)從未使用蘋果iPhone手機(jī)的人來擔(dān)任公司的銷售員工。

      3、如果測(cè)試部門否決了500臺(tái)洗衣機(jī),那么你將如何查找根源并找到解決之道?

      招聘職位:產(chǎn)品質(zhì)量工程師。如果在生產(chǎn)中發(fā)生了故障,就可能會(huì)導(dǎo)致數(shù)百部iPhone手機(jī)受損,甚至也可能會(huì)此起成千上萬的收入受損。如果你想管理產(chǎn)品質(zhì)量,那么就必須確保你能夠發(fā)現(xiàn)所有產(chǎn)生的問題,特別是那些在供應(yīng)鏈初期階段就出現(xiàn)的問題。

      4、你如何在資源非常有限的環(huán)境下將處理網(wǎng)絡(luò)、文件系統(tǒng)、用戶界面系統(tǒng)等的線程模型轉(zhuǎn)化成用戶空間框架?

      招聘職位:軟件工程師。

      編寫運(yùn)營程序的代碼較為容易,但是要讓它有效的工作就會(huì)很難了,特別是當(dāng)你為手機(jī)設(shè)計(jì)軟件時(shí),你必須依賴低功率的芯片來確保電池壽命延長。

      5、你如何計(jì)算來自中國的蘋果供應(yīng)量?

      招聘職位:材料項(xiàng)目經(jīng)理。

      他們正在探討字面意義上的蘋果,如你所知,就是水果。不過,這也是一道非常基礎(chǔ)的供應(yīng)問題。如果你負(fù)責(zé)管理供應(yīng)鏈,那么你就需要確切的知道供應(yīng) 商供應(yīng)何種產(chǎn)品、以及能夠提供什么樣的材料。蘋果公司幾乎為其生產(chǎn)的智能手機(jī)購買所有最好的元件,如果你能夠充分了解整個(gè)供應(yīng)鏈,那就能夠減少成本。

      6、使用運(yùn)營放大器來設(shè)計(jì)一個(gè)LED驅(qū)動(dòng)

      招聘職位:硬件工程師。

      通常情況下,產(chǎn)品不會(huì)在非常優(yōu)化的環(huán)境下運(yùn)行。事實(shí)上,運(yùn)行環(huán)境要么太熱、要么太冷、甚至還會(huì)在水中。因此,你必須確保你的產(chǎn)品能夠在非最優(yōu)化的環(huán)境下運(yùn)行。

      7、如何診斷緩沖溢出問題?

      招聘職位:軟件工程師。

      通常情況下,確定誰是最有才華工程師的最佳方法就是問他們?nèi)绾稳ソ鉀Q問題。緩沖溢出問題一旦產(chǎn)生,就可能會(huì)引發(fā)巨大災(zāi)難,因此,如果你想測(cè)試你的工程師在極端復(fù)雜問題面前如何采取什么行動(dòng)的話,那么這將是值得提問的好問題。

      8、你有100個(gè)編號(hào)的燈泡,在第一環(huán)節(jié)中都打開這些燈泡,然后再換上其它的新燈泡,依次類推,這樣100次過后,還有多少個(gè)燈泡在亮著?

      招聘職位:高級(jí)軟件工程師。

      實(shí)際上,蘋果的面試官并不是最傳統(tǒng)的人,他們會(huì)從Khan Academy網(wǎng)站引用一些腦經(jīng)急轉(zhuǎn)彎風(fēng)格的問題,但是,這些問題一般都是涉及一些數(shù)學(xué)技巧的復(fù)雜問題,因此,要想測(cè)試一個(gè)工程師解決問題的能力,這些問題都將是值得提出的好問題。

      9、你如何及時(shí)地關(guān)注科技新聞?

      招聘職位:Mac人才。

      如果你想運(yùn)營蘋果零售商店,那么還需要確保你具備一種認(rèn)知感覺——即了解人們?nèi)绾螐男侣勚欣斫馓O果公司。蘋果的面試官想以此了解應(yīng)聘人員是否會(huì)瀏覽TechCrunch、heck或Business Insider之類的網(wǎng)站。

      10、你從一個(gè)6×6的網(wǎng)格的左上方開始,可以向下或者向右移動(dòng),那么你會(huì)有多少種方法能夠到達(dá)網(wǎng)格的右下角?

      招聘職位:高級(jí)軟件工程師。

      這是一個(gè)叫作“路徑計(jì)算”的問題,也是最基本的一種腦筋急轉(zhuǎn)彎問題,這樣的問題旨在測(cè)試應(yīng)聘人員如何思考問題,以及能否找到解決問題的方法。蘋 果會(huì)向他們的部分高級(jí)軟件工程師提出一些更加瘋狂的此類問題,這一點(diǎn)也不足為奇。這樣的問題也取自于Khan Academy。

      11、你如何檢驗(yàn)表面曲率的連續(xù)性?

      招聘職位:CAD制圖員。

      蘋果為自己的設(shè)備繪制了大量的原型——例如iPhone和iPad的原型等。那些原型都需要進(jìn)行測(cè)試,因此,你需要讓一些人快速的繪制出原型。但是,還要保證與蘋果的其它設(shè)備保持一致,因此,你需要確保你的制圖員和設(shè)計(jì)師具備完美的意識(shí),甚至設(shè)計(jì)玻璃的形狀。

      12、找到鏈接列表的中間點(diǎn)

      招聘職位:Cocoa camp。

      蘋果會(huì)要求他們的軟件工程師提供一個(gè)更明智的解決方案。例如,你可能會(huì)獲得兩個(gè)“指示器”,一個(gè)指示器在鏈接列表中每次移動(dòng)一步,另一個(gè)每次移動(dòng)兩步。當(dāng)另一指示器到達(dá)終點(diǎn)時(shí),那么第一個(gè)指示器所處的位置就是鏈接列表的中間點(diǎn)。

      13、如果你可以帶一件科技產(chǎn)品到偏遠(yuǎn)的地方,那會(huì)是什么?

      招聘職位:專員。

      這是一個(gè)帶有“欺騙性”的問題,蘋果可能是在測(cè)試你是否喜歡iPhone手機(jī)。在蘋果店的銷售人員(蘋果店專家就是干這個(gè)的)必須非常喜歡蘋果產(chǎn)品。

      14、在金屬片上打出5個(gè)洞眼的方法?

      招聘職位:產(chǎn)品設(shè)計(jì)工程師。

      蘋果需要確保其設(shè)計(jì)師和硬件工程師至少都具備一定的創(chuàng)造力,即使他們必須成為超級(jí)技術(shù)專家,因此,即使是讓你在金屬片上打洞這樣的簡(jiǎn)單問題也可能會(huì)有很多的解決方法。事實(shí)上,蘋果是在測(cè)試應(yīng)聘人員的創(chuàng)造力。

      15、你認(rèn)為中學(xué)里什么樣的群體最好或最簡(jiǎn)單?

      招聘職位:專員

      如果你想在蘋果商店中挑出那些更可能購買蘋果產(chǎn)品的專門用戶,你就需要具備了解這些用戶是什么樣的人,無論他們是否購買蘋果產(chǎn)品,你都需要作出記號(hào),并盡可能快地區(qū)別出來。 

     

    posted @ 2012-06-09 14:23 writegull 閱讀(321) | 評(píng)論 (0)編輯 收藏


    屏幕快照 2010-12-27 上午10.20.03

    實(shí)現(xiàn)如下代碼:

    - (void)viewDidLoad {
    [super viewDidLoad];
    segmentedControl=[[UISegmentedControl alloc] initWithFrame:CGRectMake(80.0f, 8.0f, 70.0f, 25.0f) ];
    [segmentedControl insertSegmentWithTitle:@"T+" atIndex:0 animated:YES];
    [segmentedControl insertSegmentWithTitle:@"T-" atIndex:1 animated:YES];
    segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
    segmentedControl.momentary = YES;
    segmentedControl.multipleTouchEnabled=NO;
    [segmentedControl addTarget:self action:@selector(Selectbutton:) forControlEvents:UIControlEventValueChanged];
    UIBarButtonItem *segButton = [[UIBarButtonItem alloc] initWithCustomView:segmentedControl];
    [segmentedControl release];
    self.navigationItem.rightBarButtonItem = segButton;
    [segButton release];

    }

    -(void)Selectbutton:(int)sender{
    UISegmentedControl *myUISegmentedControl=(UISegmentedControl *)sender;
    NSLog(@”!!!!!!!!%d”,myUISegmentedControl.selectedSegmentIndex);
    switch (myUISegmentedControl.selectedSegmentIndex) {
    case 1:
    break;
    case 0:
    break;
    default:
    break;
    }
    }

    segmentedControl 中的字體也是可以改動(dòng)的,代碼如下:

    -(void)ChangeSegmentFont:(UIView *)aView
    {
    if ([aView isKindOfClass:[UILabel class]]) {
    UILabel *lb = (UILabel    *)aView;
    [lb setTextAlignment:UITextAlignmentCenter];
    [lb setFrame:CGRectMake(0, 0, 80, 25)];
    [lb setFont:[UIFont systemFontOfSize:18]];
    }
    NSArray *na = [aView subviews];
    NSEnumerator *ne = [na objectEnumerator];
    UIView *subView;
    while (subView = [ne nextObject]) {
    [self ChangeSegmentFont:subView];
    }
    }

    在需要調(diào)用此方法的地方加入下面方法即可(分段控件中已經(jīng)有分段按鈕時(shí)調(diào)用)

    [self ChangeSegmentFont:UISegmentedControl的對(duì)象];

    即可

    posted @ 2012-05-03 17:34 writegull 閱讀(4410) | 評(píng)論 (0)編輯 收藏

    主站蜘蛛池模板: 免费观看成人久久网免费观看| 亚洲午夜精品久久久久久app| 一级成人毛片免费观看| 日本大片在线看黄a∨免费| 亚洲国产精品成人综合久久久| 99精品热线在线观看免费视频| 亚洲精品成人片在线播放 | 亚洲网站在线观看| 最近的2019免费中文字幕| 亚洲精品成人片在线观看| 高潮毛片无遮挡高清免费视频| 日韩一区二区在线免费观看| 亚洲欧洲免费无码| 好爽…又高潮了免费毛片| 国产精品亚洲精品青青青| 日韩不卡免费视频| 亚洲AV色吊丝无码| 无人在线直播免费观看| 亚洲成AV人综合在线观看| 亚洲一级毛片免费观看| 亚洲日韩乱码中文无码蜜桃臀| 久久免费的精品国产V∧| 97亚洲熟妇自偷自拍另类图片| 久久久久久久久久国产精品免费| 亚洲伦另类中文字幕| 久久久精品2019免费观看| 久久久久久久亚洲Av无码| 18级成人毛片免费观看| 亚洲精品网站在线观看你懂的| 最近最好最新2019中文字幕免费| 日韩精品亚洲人成在线观看 | 黄网址在线永久免费观看| 亚洲kkk4444在线观看| 日韩在线看片免费人成视频播放| 亚洲AV无码一区二区乱子仑| 国产一区二区免费在线| 深夜免费在线视频| 亚洲中文字幕无码中文字在线| 97人妻精品全国免费视频 | 69堂人成无码免费视频果冻传媒| 亚洲国产成人精品无码区在线秒播|