月度归档: 2016 年 6 月

  • Python2 在windows控制台运行会出现乱码,改用IronPython解析就好了

    Python2 在windows控制台运行会出现乱码,改用IronPython解析就好了。

    Python2 在windows控制台运行会出现乱码。

     一个彻底的解决 办法是改成python3,但工作量太大。
    今晚试了下IronPython,,非常好用,直接支持中文了,而且不用改一行代码!!!

    因为这个事情浪费了好多时间。把一个QQ机器人的代码改成了py3

    注意在Py文件第一行写上: # -*- coding: utf-8 -*-

  • C# 随机生成手机号码

    C# 随机生成手机号码

    private string [] telStarts = "134,135,136,137,138,139,150,151,152,157,158,159,130,131,132,155,156,133,153,180,181,182,183,185,186,176,187,188,189,177,178" .Split(',' );
    
    /// <summary>
    /// 随机生成电话号码
    /// </summary>
    /// <returns></returns>
    public string getRandomTel()
    {
        Random ran = new Random();
        int n = ran.Next(10, 1000);
        int index = ran.Next(0, telStarts.Length - 1);
        string first = telStarts[index];
        string second = (ran.Next(100, 888) + 10000).ToString().Substring(1);
        string thrid = (ran.Next(1, 9100) + 10000).ToString().Substring(1);
        return first + second + thrid;
    }
  • 术业有专攻,列举一些专业成熟的工具和解决方案

    提示:本文发布于八年前,已不具有参考意义。

    不折腾,多年走弯路的经验告诉我,不遵守以下原则必将浪费生命和时间。
    没有问题就不要折腾,遇到问题或需求再去研究并解决。
    用成熟的技术,不要做技术小白鼠。
    不要追求完美 ,世界本来就是不完美的,好和坏是一半一半的。任何事物都有两面性。要接受不完美。
    追求简单、 实用、快速、高效。

    1. 工具的选用:选择对所使用的语言支持最好的IDE(以下只针对windows平台)
      • .NET就用Visual Studio
      • Java就用JetBrains IntelliJ IDEA
      • Python就用JetBrains PyCharm
      • PHP就用JetBrains PhpStorm
      • 数据库开发用Navicat或不同数据库的专用工具(如sql server management studio 和 plsql developer)
      • 编辑器可以选用Notepad++或sublime
    2. Web开发:
      • 没有要求,就用PHP,专为Web而生
        • 给客户做网站,如果不需要维护,可以不用框架
        • 需要长期维护的必须用框架,可以选择的框架有CodeIgniter3或现代化的框架YII2。
        • Laravel虽然流行,但比较吃资源,性能有点弱,真正做项目时要好好考量。
        • IDE用PHPStrom
        • 数据库层用PDO
        • 自己搭建环境用nginx+php-fpm+php7+pgsql
      • 如果需要.net
        • 自己一个人开发就用 asp.net webform简单粗暴效率高
        • 团队开发用asp.net mvc,方便分工合作
        • 跨平台用mono来支持。Linux上服务器用Jexus。
        • asp.net core刚出来,先不用,过几年再说。
      • 如果需要JAVA,就用JFinal,国人开发,据说还不错,我没实践。
    3. 前端框架
      • 考虑兼容性就用pintuer或bootstrap2,兼容性最好,兼容IE8。不考虑兼容性就用bootstrap3或bootstrap4
      • 弹层用国产layer http://layer.layui.com/
      • js框架用jquery
    4. 数据库
      • 给客户做可以用mysql或者mssql,通用性更好。mysql在linux下直接用apt-get安装,省事。不要自己编译,不要没事找事。
      • 没要求或自己用也可以用pgsql(pgsql管理工具使用Navicat for PostgreSQL)。pgsql省内存,性能好,稳定,功能强大——实践出来的。
    5. 做底层的C/C++
    6. 做windows程序的.NET
    7. 做安卓开发的Java
    8. 做苹果应用的oc和swift
    9. 做跨平台桌面程序的Qt
    10. 做服务器的Linux
    11. 做桌面系统Windows或MAC
    12. 服务器后台服务程序可以用C/C++和Java以及Python
    13. 做博客的WordPress或Typecho(这货稍微有点折腾)
    14. 做笔记的evernote或为知笔记
    15. 主机能备案最好选择国内,否则就用香港阿里云或日本conaha,PHP虚拟空间用香港londit,asp.net虚拟空间用webweb香港云。
  • 在Codeigniter中使用Blade模板引擎

    在Codeigniter中使用Blade模板引擎:

    使用compoer引入blade库

    composer require "philo/laravel-blade": "3.*"

    在helpers目录下创建 view_helper.php

    <?php if (!defined('BASEPATH')) exit('No direct script access allowed');
    require_once 'vendor/autoload.php';
    
    use Philo\Blade\Blade;
    
    if (!function_exists('view')) {
        function view($name = NULL, $data = [], $mergeData = [])
        {
            $CI = &get_instance();
            if (!isset($CI->blade)) {
                $views = __DIR__ . '/../views';
                $cache = __DIR__ . '/../cache';
                $CI->blade = new Blade($views, $cache);
                $elapsed_time = $CI->benchmark->elapsed_time('total_execution_time_start', 'total_execution_time_end');
                $CI->blade->view()->share('elapsed_time', $elapsed_time);
            }
            echo $CI->blade->view()->make($name, $data, $mergeData)->render();
        }
    }
    

    在config/autoload.php中,引入 

    $autoload['helper'] = array('view', 'url');

    controller中:

    <?php defined('BASEPATH') or exit('No direct script access allowed');
    class Welcome extends CI_Controller
    {
        public function index()
        {
            return view('index', ['name' => 'haha']);
        }
        public function test()
        {
            echo 'this is a test';
        }
    }

    还是喜欢codeigniter的简洁和可扩展性,用来做中小项目还是很爽的。

  • Laravel无法加载.env的问题

    在万网虚拟主机上,发现laravel无法加载.env中配置的信息,然后一路跟踪发现,问题出在PHPDotEnv这个库上
    在Loader.php里有一个函数如下:

    public function setEnvironmentVariable($name, $value = null)
    {
        list($name, $value) = $this->normaliseEnvironmentVariable($name, $value);
    
        // Don't overwrite existing environment variables if we're immutable
        // Ruby's dotenv does this with `ENV[key] ||= value`.
        if ($this->immutable && $this->getEnvironmentVariable($name) !== null) {
            return;
        }
    
        putenv("$name=$value");
    
        $_ENV[$name] = $value;
        $_SERVER[$name] = $value;
    }

    里面使用了putenv函数,这个函数是用于设置或修改环境变量的,目的是把.env里面的配置放到环境变量里面。通过var_dump查看返回值发现都是NULL, 可以猜测万网虚拟主机应该是禁用了putenv这个函数。

    解决办法就是放弃使用.env文件,把里面的一些配置信息放到config/app.php里面去。