手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜Qcloud , 注册 | 登陆
浏览模式: 标准 | 列表全部文章

[置顶] [转]Git使用https方式记住密码

老是会忘,所以抄下来做个笔记:

 
 
XML/HTML代码
  1. Git使用https方式进行连接时,默认每次推送时都要输入用户名和密码。  
  2.   
  3. 可以使用命令  
  4.   
  5. git config credential.helper store  
  6.   
  7. 为当前仓库设置记住密码,设置后,只要在推送一次,以后就不需要用户名和密码了。  
  8.   
  9. 只要运行后,下次push/pull的时候再输入一次密码,git就会记住啦!再次push/pull的时候就不用输用户名和密码了。  
  10.   
  11. 转自:http://www.yalewoo.com/git_https_password.html  

[置顶] mac没有声音的处理

mac突然间就没有声音了。。。按照以往的办法,拿出耳机,插拔一下。。。结果 还是没有

最后没办法,从网上找了点资料,说是:
XML/HTML代码
  1. sudo killall coreaudiod  
然后就好了,不过有人说,这样也不一定有效,果然在知乎上有很多大神就说了不少方法,手法不同,各有千秋,我挑个最简单的出来:
XML/HTML代码
  1. 著作权归作者所有。  
  2. 商业转载请联系作者获得授权,非商业转载请注明出处。  
  3. 作者:周全  
  4. 链接:http://www.zhihu.com/question/21975970/answer/20769174  
  5. 来源:知乎  
  6.   
  7. 应该是系统问题 重启成本还是很高的 可以试着重载声音驱动sudo kextunload /System/Library/Extensions/AppleHDA.kextsudo kextload /System/Library/Extensions/AppleHDA.kext  
 
其他更多请查看上述的链接,或者打开这个网页:http://www.zhihu.com/question/21975970
 
 
 

[置顶] 常用网站的反向代理页[2013-09-28]

做了几个常用网站的反向代理页。为什么要做,你懂的(标题的时间就是最新更新的时间)【建议自主翻墙,不再提供反代页面

1、golang:http://go.neatcn.com , 或者点击 golang
2、Yiiframework,http://yii.neatcn.com 或者点击 yii
3、golang play:http://goplay.neatcn.com 或者点击:goplay

目前仅做了这些个网站的反向代理 ,如果你有其他需求,请提出来,我会尽量解决。超大型的网站就算了。

[2013-09-28]
4、VIM官方网站:http://vim.neatcn.com 或者点击:VIM
5、SlideShare:http://slideshare.neatcn.com , 如果你觉得域名太长,也可以直接访问:http://ss.neatcn.com ,或者点击:slideshare

Tags: golang, yii

laravel mass update can not fire any events

 一个很简单的laravel代码:

PHP代码
  1. User::where('id',1)->update(['last_login'=>time()]);  
这样一个简单的代码,你会发现,它并没有触发:updating,updated事件,然而,你又会发现,updated_at也更新了。这是怎么回事?
跟进代码看一下,你会发现这个update,是Eloquent\Builder的方法,它的update方法代码很简单:
PHP代码
  1. /** 
  2.  * Update a record in the database. 
  3.  * 
  4.  * @param  array  $values 
  5.  * @return int 
  6.  */  
  7. public function update(array $values)  
  8. {  
  9.     return $this->toBase()->update($this->addUpdatedAtColumn($values));  
  10. }  
我擦 ,要不要这么直接?再看一下toBase,这回是调用的是Query\Builder了。这里的update,就纯粹是生成sql,然后execute,不再走EloquentORM的事件了,所以就不会触发任何事件。
 
那么要怎么样才能触发事件呢?方法有两种
1、不要这样简写:先读数据再update,就一定会触发
2、不要用where(),而是直接User::find(1)->update([]),这时候就会从ORM走了。
 
这事儿官方有解释:
https://laravel.com/docs/5.3/eloquent#updates
  1. When issuing a mass update via Eloquent, the saved and updated model events will not be fired for the updated models. This is because the models are never actually retrieved when issuing a mass update.  
同时,这事儿在stackoverflow上也有很多人在问,有人回复的就是和我上面的一样:
http://stackoverflow.com/questions/41295032/laravel-eloquent-model-update-event-is-not-fired
  1. You need to retrieve the user from the database and then save that user in order to fire the event. For example:  
  2.   
  3. This will NOT fire the update event:  
  4.   
  5. User::where('id', $id)->update(['username' => $newUsername]);  
  6. This will fire the update event:  
  7.   
  8. User::find($id)->update(['username' => $newUsername]);  
官方的解释我是看过了,下面的是我用了很多办法没法解决后才找到的。
我在想,use SoftDeletes可以注入代码,为什么我不行?直到我发现softdeletes是官方自带库,人家都准备了事件:onDelete了。。怎么就没有onUpdate事件可以让我加点字段呢?
然后我又想用其他的Scope,也没有成功(折腾了一个下午)
 
暂时放弃!就这样吧,不过我还在想想,有没有什么办法可以注入,因为在sql生成完后,它还是有触发的事件的,比如:
PHP代码
  1. /** 
  2.   * Log a query in the connection's query log. 
  3.   * 
  4.   * @param  string  $query 
  5.   * @param  array   $bindings 
  6.   * @param  float|null  $time 
  7.   * @return void 
  8.   */  
  9.  public function logQuery($query$bindings$time = null)  
  10.  {  
  11.      if (isset($this->events)) {  
  12.          $this->events->fire(new Events\QueryExecuted(  
  13.              $query$bindings$time$this  
  14.          ));  
  15.      }  
  16.   
  17.      if ($this->loggingQueries) {  
  18.          $this->queryLog[] = compact('query', 'bindings', 'time'); 
  19.      } 
  20.  } 
  21.  
  22.  /** 
  23.   * Register a database query listener with the connection. 
  24.   * 
  25.   * @param  \Closure  $callback 
  26.   * @return void 
  27.   */ 
  28.  public function listen(Closure $callback) 
  29.  { 
  30.      if (isset($this->events)) { 
  31.          $this->events->listen(Events\QueryExecuted::class, $callback); 
  32.      } 
  33.  } 
  34.  
  35.  /** 
  36.   * Fire an event for this connection. 
  37.   * 
  38.   * @param  string  $event 
  39.   * @return void 
  40.   */ 
  41.  protected function fireConnectionEvent($event) 
  42.  { 
  43.      if (! isset($this->events)) { 
  44.          return; 
  45.      } 
  46.  
  47.      switch ($event) { 
  48.          case 'beganTransaction': 
  49.              return $this->events->fire(new Events\TransactionBeginning($this)); 
  50.          case 'committed': 
  51.              return $this->events->fire(new Events\TransactionCommitted($this)); 
  52.          case 'rollingBack':  
  53.              return $this->events->fire(new Events\TransactionRolledBack($this));  
  54.      }  
  55.  }  
实在不行了,还可以在事务上面想想办法,但是总归是只能一次处理,如果是需要两次执行sql。那还不如直接写代码呢。等有空再看了
 
 
 

android studio安装APK时出错:INSTALL_FAILED_NO_MATCHING_ABIS

记录一下,真机编译的时候没问题,用模拟器的时候报:INSTALL_FAILED_NO_MATCHING_ABIS,查了一下原因。就是因为为了提速用了、x86的模拟,所以。。。

还好stackoverflow有人解决了这些问题:

1、http://stackoverflow.com/questions/24572052/install-failed-no-matching-abis-when-install-apk

2、http://stackoverflow.com/questions/24751350/install-failed-no-matching-abis-how-to-overcome

解决起来还是比较简单的,在app/build.grade的android节点下增加:

XML/HTML代码
  1.     abi {  
  2.         enable true  
  3.         reset()  
  4.         include 'x86', 'armeabi-v7a'  
  5.         universalApk true  
  6.     }  
  7. }  

一切就OK了,再编译的时候就:

XML/HTML代码
  1. 01/14 09:36:59: Launching app  
  2. $ adb install-multiple -r /xxxxx/app/build/outputs/apk/app-x86-debug.apk /xxxxx/app/build/intermediates/split-apk/debug/slices/slice_5.apk /xxxxx/app/build/intermediates/split-apk/debug/slices/slice_6.apk /xxxxx/app/build/intermediates/split-apk/debug/slices/slice_9.apk /xxxxx/app/build/intermediates/split-apk/debug/slices/slice_2.apk /xxxxx/app/build/intermediates/split-apk/debug/dep/dependencies.apk /xxxxx/app/build/intermediates/split-apk/debug/slices/slice_8.apk /xxxxx/app/build/intermediates/split-apk/debug/slices/slice_7.apk /xxxxx/app/build/intermediates/split-apk/debug/slices/slice_3.apk /xxxxx/app/build/intermediates/split-apk/debug/slices/slice_4.apk /xxxxx/app/build/intermediates/split-apk/debug/slices/slice_0.apk /xxxxx/app/build/intermediates/split-apk/debug/slices/slice_1.apk   
  3. Split APKs installed  
  4. $ adb shell am start -n "com.xxxxx.app/com.xxxxx.app.activity.StartActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER  
  5. $ adb shell am startservice com.xxxxxx.app/com.android.tools.fd.runtime.InstantRunService  
  6. Connected to process 3689 on device emulator-5554  
居然切成了10个apk.....


Records:271212345678910»