PHP把\n换行符转成<br>:
nl2br('abc\ndef'); // 输出abc<br/>def
函数名的意思是 new line to br
。
PHP把\n换行符转成<br>:
nl2br('abc\ndef'); // 输出abc<br/>def
函数名的意思是 new line to br
。
C++ STL 去掉字符串中指定的字符 。
bind2nd 函数要用到头文件functional
#include <functional>
string response = "aaa\r\nbbb\r\n";
string::iterator new_end = remove_if(response.begin(), response.end(), bind2nd(equal_to<char>(), '\r'));
response.erase(new_end, response.end());
VC结束第三方应用的进程:
BOOL GetDebugPriv()
{
HANDLE hToken;
LUID sedebugnameValue;
TOKEN_PRIVILEGES tkp;
if (!OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY , &hToken))
{
return FALSE ;
}
if (! LookupPrivilegeValue( NULL , SE_DEBUG_NAME , &sedebugnameValue))
{
CloseHandle(hToken);
return FALSE ;
}
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Luid = sedebugnameValue;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED ;
if (!AdjustTokenPrivileges(hToken, FALSE , &tkp, sizeof tkp, NULL, NULL))
{
CloseHandle(hToken);
return FALSE ;
}
return TRUE ;
}
void CToolDlg ::KillProcess()
{
GetDebugPriv();
PROCESSENTRY32 pe32;
pe32.dwSize = sizeof (pe32);
HANDLE hProcessSnap = ::CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0);
if (hProcessSnap == INVALID_HANDLE_VALUE )
{
MessageBox (L"CreateToolhelp32Snapshot调用失败!\n" );
return ;
}
CString strPrcNameID;
BOOL bMore = ::Process32First (hProcessSnap, &pe32);
while (bMore)
{
if (lstrcmp (pe32.szExeFile, _TEXT( "contrlvip.exe")) == 0)
{
HANDLE hTargetProcess = OpenProcess(PROCESS_QUERY_INFORMATION | // Required by Alpha
PROCESS_CREATE_THREAD | // For CreateRemoteThread
PROCESS_VM_OPERATION | // For VirtualAllocEx/VirtualFreeEx
PROCESS_VM_WRITE | // For WriteProcessMemory
PROCESS_TERMINATE , //Required to terminate a process using TerminateProcess function
FALSE , pe32.th32ProcessID);
if (hTargetProcess == NULL )
{
DWORD ulErrCode = GetLastError();
CString strError;
strError.Format( L"OpenProcess failed,error code:%ld" , ulErrCode);
AfxMessageBox(strError);
}
BOOL result = TerminateProcess(hTargetProcess, 0);
if (!result)
{
DWORD ulErrCode = GetLastError();
CString strError;
strError.Format( L"TerminateProcess failed,error code:%ld" , ulErrCode);
AfxMessageBox(strError);
}
}
bMore = :: Process32Next (hProcessSnap, &pe32);
}
::CloseHandle(hProcessSnap);
}
https://github.com/mono/libgdiplus/releases 下载最新版本
解压并执行 ./autogen.sh,在执行此步时遇到如下问题,并帖出解决办法
问题:执行 ./autogen.sh时报错 Error: You must have `autoconf’ installed to compile Mono.
解决办法:apt-get install autoconf
问题:执行./autogen.sh报错 Error: You must have `libtool’ installed to compile Mono.
解决:apt-get install libtool
问题:configure: error: You need to install pkg-config
解决: apt-get install pkg-config
问题:No package ‘glib-2.0’ found
解决:apt-get install glib-2.0
问题:No package ‘cairo’ found
解决:apt-get install libcairo2-dev
都解决后,最后执行 make && make install
supervisor是微软官方推荐的一个工具,传送门, 所以我们也使用这个工具来管理我们的asp.net core应用进程
服务器环境:ubuntu14.04 x64
安装 apt-get install supervisor
配置文件目录: /etc/supervisor/conf.d
添加配置文件 vi /etc/supervisor/conf.d/xxx.conf
配置内容如下:
[program:sellplatform]
command=/var/www/yiinet.cc/SellPlatform
directory=/var/www/yiinet.cc
autostart=true
autorestart=true
stderr_logfile=/var/log/sellplatform.err.log
stdout_logfile=/var/log/sellplatform.out.log
environment=Hosting__Environment=Development
user=root
stopsignal=INT
redirect_stderr=true
supervisor 相关命令
重启supervisor服务 service supervisor restart
查看状态 supervisorctl status
关闭目标程序 supervisorctl stop sellplatform
启动目标程序 supervisorctl start sellplatform
关闭所有程序 supervisorctl shutdown
SQL SERVER按字母数字的组合排序
SELECT Price, Contact,Number, GameType, ServerName, Account,Password, Rank, RentDate, Legends, Detail, IsRent, Id
FROM dbo.AccountInfo
ORDER BY UPPER(LEFT(Number, patindex('%[^a-z]%',Number)-1)) ASC, Convert(int, RIGHT(Number,LEN(Number)- patindex('%[^a-z]%',Number)+1)) ASC, Number ASC
Mysql版本
SELECT Number
FROM accountinfo
ORDER BY
CASE WHEN Number REGEXP '^[A-Z]{2}'
THEN 1
ELSE 0
END ASC,
CASE WHEN Number REGEXP '^[A-Z]{2}'
THEN LEFT(Number, 2)
ELSE LEFT(Number, 1)
END ASC,
CASE WHEN Number REGEXP '^[A-Z]{2}'
THEN CAST(RIGHT(Number, LENGTH(Number) - 2) AS SIGNED)
ELSE CAST(RIGHT(Number, LENGTH(Number) - 1) AS SIGNED)
END ASC
postgresql版本
SELECT *, (regexp_matches(Number, '[A-Z]+' ))[1], (regexp_matches(Number, '[0-9]+' ))[1] from aaa
ORDER BY (regexp_matches(Number, '[A-Z]+' ))[1] ASC ,
to_number((regexp_matches(Number, '[0-9]+' ))[1], '999999') ASC
Python2 在windows控制台运行会出现乱码,改用IronPython解析就好了。
Python2 在windows控制台运行会出现乱码。
一个彻底的解决 办法是改成python3,但工作量太大。
今晚试了下IronPython,,非常好用,直接支持中文了,而且不用改一行代码!!!
因为这个事情浪费了好多时间。把一个QQ机器人的代码改成了py3
注意在Py文件第一行写上: # -*- coding: utf-8 -*-
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;
}
不折腾,多年走弯路的经验告诉我,不遵守以下原则必将浪费生命和时间。
没有问题就不要折腾,遇到问题或需求再去研究并解决。
用成熟的技术,不要做技术小白鼠。
不要追求完美 ,世界本来就是不完美的,好和坏是一半一半的。任何事物都有两面性。要接受不完美。
追求简单、 实用、快速、高效。
在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的简洁和可扩展性,用来做中小项目还是很爽的。