Laravel 中 Lang get 方法的简单实现

Laravel 中获取语言的方法 Lang::get() 非常好用,我经常将一些错误提示放到这些文件里。比如:

<?php

return [
    /*
    |--------------------------------------------------------------------------
    | Authentication Language Lines
    |--------------------------------------------------------------------------
    |
    | The following language lines are used during authentication for various
    | messages that we need to display to the user. You are free to modify
    | these language lines according to your application's requirements.
    |
    */

    'failed' => '验证失败。',
    'throttle' => '登录验证过于频繁,请 :seconds 秒后再试。',
    'link_not_exist_or_expired' => '该链接不存在,或超时失效',
];

获取的方法则如下:

['100', Lang::get('auth.throttle', ['seconds' => $this->lockoutTime()])];

后面的数组将替换 :seconds 处。

期间自己某个功能也需要模板,但又不好使用Lang这个方法,遂自己实现了一个类似的方法。很简单的:

if (!function_exists('lang_get')) {
    function lang_get($str, array $params = [])
    {
        foreach ($params as $key => $value) {
            $str = str_replace(':' . $key, $value, $str);
        }
        return $str;
    }
}

Linux 设定静态IP地址

临时修改

ifconfig eth0 10.192.147.241 netmask 255.255.255.0
route add default gw 10.192.147.245

vi /etc/resolv.conf

nameserver 192.168.0.1

永久修改

vi /etc/network/interfaces

auto lo
iface lo inet loopback
auto eth0               # auto 开机自动连接网络 allow-hotplug 
# iface eth0 inet dhcp # 设置成DHCP,动态ip
iface eth0 inet static # static表示使用固定ip
address 192.168.038
netmask 255.255.255.0 # 子网掩码
gateway 192.168.0.1

vi /etc/resolvconf/resolv.conf.d/base

nameserver 8.8.8.8
nameserver 8.8.4.4

常见问题

  • stop: Job failed while stopping

    我使用 Ubuntu 14.4 版本时使用重启网络命名 service networking restart,显示这个错误。 解决的办法是

      ifdown --exclude=lo -a && ifup --exclude=lo -a
    
  • 在配置网络时auto与allow-hotplug的区别

    auto

      语法:
      auto <interface_name>
      含义:
      在系统启动的时候启动网络接口,无论网络接口有无连接(插入网线),如果该接口配置了DHCP,则无论有无网线,系统都会去执行DHCP,如果没有插入网线,则等该接口超时后才会继续。
    

    allow-hotplug

      语法:
      allow-hotplug <interface_name>
    
      含义:
      只有当内核从该接口检测到热插拔事件后才启动该接口。如果系统开机时该接口没有插入网线,则系统不会启动该接口,系统启动后,如果插入网线,系统会自动启动该接口。也就是将网络接口设置为热插拔模式。
    

参考资料


记录使用Docker时的一些问题

无法启动Docker服务

运行 service docker start 时报错

Redirecting to /bin/systemctl start docker.service Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.

解决问题的办法就是清空 /var/lib/docker 下的所有文件。要注意这样会导致你所有的Docker数据都会丢失。

来自 [docker service failed to start #25913 github issues](https://github.com/docker/docker/issues/25913)

docker 主机的 iptables 设置

  • iptables failed - No chain/target/match by that name

    一个bug,重启dockers服务就好了。

      mv /var/lib/docker/network/files /tmp/docker-iptables-err
      systemctl restart docker
    
  • iptable filter

    使用 Docker PPTP 的 iptable 例子

      *nat 
      -A POSTROUTING -s 10.99.99.0/24 -o eth0 -j MASQUERADE
    
      * filter
      -A FORWARD -d 10.99.99.0/24 -j ACCEPT
      -A FORWARD -s 10.99.99.0/24 -j ACCEPT
    

    这个 issue 是我提的。提完之后自己就找到答案了。

来自iptable filter - github

can’t modprobe af_key in debian8

这个与主机提供商有关了。主机在使用 docker 时某些项目需要使用 IPsec NETKEY 内核模块,其它主机不了解,linode的默认内核是修改过的,所以没有这个内核模块。如果想启用的话需要在后台配置里将默认启动内核改为 GRUB 2 模式。

来自docker issue - github


zsh进阶配置 - 显示 hostname

你可以查看我在github上的开源项目 KeluLinuxKit 获得完整源码。

手上有好几台服务器,配置都是相似的,也使用zsh。每次窗口稍微一多,就不知道是在哪个服务器上了,每次hostname也是麻烦。寻思着还是想办法在zsh上显示hostname吧。然后找到了一个超强的 .zshrc 配置。原文在这:My Extravagant Zsh Prompt

我稍微做了一点点调整,将它加到 .zshrc 里去,最后是这样子的。

效果图如下:

源码如下:

function collapse_pwd {
    echo $(pwd | sed -e "s,^$HOME,~,")
}

function prompt_char {
    git branch >/dev/null 2>/dev/null && echo '±' && return
    hg root >/dev/null 2>/dev/null && echo '☿' && return
    echo 'YUKI.N > '
}

function battery_charge {
    echo `$BAT_CHARGE` 2>/dev/null
}

function virtualenv_info {
    [ $VIRTUAL_ENV ] && echo '('`basename $VIRTUAL_ENV`') '
}

function hg_prompt_info {
    hg prompt --angle-brackets "\
< on %{$fg[magenta]%}<branch>%{$reset_color%}>\
< at %{$fg[yellow]%}<tags|%{$reset_color%}, %{$fg[yellow]%}>%{$reset_color%}>\
%{$fg[green]%}<status|modified|unknown><update>%{$reset_color%}<
patches: <patches|join( → )|pre_applied(%{$fg[yellow]%})|post_applied(%{$reset_color%})|pre_unapplied(%{$fg_bold[black]%})|post_unapplied(%{$reset_color%})>>" 2>/dev/null
}

PROMPT='
%{$fg[magenta]%}%n%{$reset_color%} at %{$fg[yellow]%}%m%{$reset_color%} in %{$fg_bold[green]%}$(collapse_pwd)%{$reset_color%}$(hg_prompt_info)$(git_prompt_info)
$(virtualenv_info)$(prompt_char) '

RPROMPT='$(battery_charge)'

ZSH_THEME_GIT_PROMPT_PREFIX=" on %{$fg[magenta]%}"
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}"
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[green]%}!"
ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[green]%}?"
ZSH_THEME_GIT_PROMPT_CLEAN=""

参考资料


Laravel 资源推荐

使用 Laravel 进行开发也有两年的时间了。整理了一下平时常用的资源。

首先不得不说这个 Github 项目,整理了来自Laravel生态系统的精选资源,包括书签、包、教程、视频以及其它诸多很酷的资源。原项目有4000+的star,folk过来做了本土化。 非常的全面。基本上所有的项目我也看了一遍,发现下面几个项目最实用。记录一下。

插件包

项目案例

参考资料