nginx访问日志按照日期分文件存储

nginx默认的access_log存储方式是单文件,小流量网站没有问题,大流量网站在经历长时间运行后,日志文件变得非常大,难以维护,查阅nginx文档后,写下配置

if ($time_iso8601 ~ '(\d{4}-\d{2}-\d{2})')
{
    set $day $1;
}
access_log /home/wwwlogs/blog.yinghualuo.cn_$day.log;

如果有更好的方案,请不吝赐教

开源协议BSD、Apache2、GPL、LGPL、MIT

BSD开源协议(original BSD licenseFreeBSD licenseOriginal BSD license

BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。

但”为所欲为”的前提当你发布使用了BSD协议的代码,或则以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:

  1. 如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。
  2. 如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。
  3. 不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。

BSD 代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销售,因此是对 商业集成很友好的协议。而很多的公司企业在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。

Apache Licence 2.0(Apache License, Version 2.0Apache License, Version 1.1Apache License, Version 1.0

Apache Licence是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。需要满足的条件也和BSD类似:

  1. 需要给代码的用户一份Apache Licence
  2. 如果你修改了代码,需要再被修改的文件中说明。
  3. 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。
  4. 如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache Licence。你可以在Notice中增加自己的许可,但不可以表现为对Apache Licence构成更改。

Apache Licence也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。

GPL(GNU General Public License

我们很熟悉的Linux就是采用了GPL。GPL协议和BSD, Apache Licence等鼓励代码重用的许可很不一样。GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代 码做为闭源的商业软件发布和销售。这也就是为什么我们能用免费的各种linux,包括商业公司的linux和linux上各种各样的由个人,组织,以及商 业软件公司开发的免费软件了。

GPL协议的主要内容是只要在一个软件中使用(”使用”指类库引用,修改后的代码或者衍生代码)GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。这就是所谓的”传染性”。GPL协议的产品作为一个单独的产品使用没有任何问题,还可以享受免费的优势。

由于GPL严格要求使用了GPL类库的软件产品必须使用GPL协议,对于使用GPL协议的开源代码,商业软件或者对代码有保密要求的部门就不适合集成/采用作为类库和二次开发的基础。

其它细节如再发布的时候需要伴随GPL协议等和BSD/Apache等类似。

LGPL(GNU Lesser General Public License

LGPL是GPL的一个为主要为类库使用设计的开源协议。和GPL要求任何使用/修改/衍生之GPL类库的的软件必须采用GPL协议不同。LGPL 允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码。这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并 发布和销售。

但是如果修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议。因此LGPL协议的开源 代码很适合作为第三方类库被商业软件引用,但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。

GPL/LGPL都保障原作者的知识产权,避免有人利用开源代码复制并开发类似的产品。

MIT(MIT

MIT是和BSD一样宽范的许可协议,作者只想保留版权,而无任何其他了限制.也就是说,你必须在你的发行版里包含原许可协议的声明,无论你是以二进制发布的还是以源代码发布的。


今天又看到一个同学发布维权帖子《开源 App 被人抄袭到 iOS App Store 怎么办?》这个帖子转发到技术群的时候引发了很大的讨论,大多数同学都是声援的态度,也有较真的同学在讨论 MIT License ,那么License 是什么,MIT License 又是什么?

License就是版权许可证,里面详尽表述了你获得代码后拥有的权利,可以对别人的作品进行何种操作,何种操作又是被禁止的。软件的版权许可证可有很多方式,本文仅限于讨论开源软件协议 Open Source License。

       世界上的开源许可证(Open Source License)大概有上百种,上文提到的 MIT License 仅仅只是其中的一种而已,而我们常用的开源软件协议大致有GPLBSDMITMozillaApacheLGPL。我们不必要每个开源协议都了然于心,但是可以了解几个

主要的协议的权利和义务。

如果看完还是一头雾水的话,乌克兰程序员Paul Bagwell,画了一张分析图,说明应该怎么选择,下图为国内大牛阮一峰汉化了版本。

来一个更加清晰和完全一点的图,目前只有英文版,希望可以用同学可以汉化。

希望以上的总结可以帮助到一些同学更好的为自己的开源项目选择一个合适的开源协议,当自己的开源项目被侵权的时候不至于处于被动的位置,也希望可以帮助到大家更“合法”的应用开源项目,很多开源协议最低要求是使用者需要保留原作者对代码的声明,估计大家都忽略掉了吧。

开源不等于免费,开源也不等于没有约束。


转载自: https://blog.csdn.net/qwertyuiop_123abc/article/details/82110221

使用postman调试启用csrf验证的laravel框架方法

由于laravel框架默认开启csrf_token验证,鉴于安全性考量,不关闭csrf_token验证,post、put、patch等请求均会验证csrf_token的正确性,故写下调试教程。

当前Postman是 Version 7.9.0 win32 10.0.18362 / x64

创建一个新的postman environment

选择刚刚创建好的environment

自动获取cookie的csrf_token 到postman的全局环境里

pm.environment.set("XSRF-TOKEN",decodeURIComponent(pm.cookies.get("XSRF-TOKEN")))

在请求中,自动设置csrf_token

{{XSRF-TOKEN}}

附Postman官网地址,推荐下载App原生版本的Postman,不推荐Chrome插件版 https://www.getpostman.com/downloads/

常用MIME类型列表

类型/子类型扩展名
application/envoyevy
application/fractalsfif
application/futuresplashspl
application/htahta
application/internet-property-streamacx
application/mac-binhex40hqx
application/msworddoc
application/msworddot
application/octet-stream*
application/octet-streambin
application/octet-streamclass
application/octet-streamdms
application/octet-streamexe
application/octet-streamlha
application/octet-streamlzh
application/odaoda
application/olescriptaxs
application/pdfpdf
application/pics-rulesprf
application/pkcs10p10
application/pkix-crlcrl
application/postscriptai
application/postscripteps
application/postscriptps
application/rtfrtf
application/set-payment-initiationsetpay
application/set-registration-initiationsetreg
application/vnd.ms-excelxla
application/vnd.ms-excelxlc
application/vnd.ms-excelxlm
application/vnd.ms-excelxls
application/vnd.ms-excelxlt
application/vnd.ms-excelxlw
application/vnd.ms-outlookmsg
application/vnd.ms-pkicertstoresst
application/vnd.ms-pkiseccatcat
application/vnd.ms-pkistlstl
application/vnd.ms-powerpointpot
application/vnd.ms-powerpointpps
application/vnd.ms-powerpointppt
application/vnd.ms-projectmpp
application/vnd.ms-workswcm
application/vnd.ms-workswdb
application/vnd.ms-workswks
application/vnd.ms-workswps
application/winhlphlp
application/x-bcpiobcpio
application/x-cdfcdf
application/x-compressz
application/x-compressedtgz
application/x-cpiocpio
application/x-cshcsh
application/x-directordcr
application/x-directordir
application/x-directordxr
application/x-dvidvi
application/x-gtargtar
application/x-gzipgz
application/x-hdfhdf
application/x-internet-signupins
application/x-internet-signupisp
application/x-iphoneiii
application/x-javascriptjs
application/x-latexlatex
application/x-msaccessmdb
application/x-mscardfilecrd
application/x-msclipclp
application/x-msdownloaddll
application/x-msmediaviewm13
application/x-msmediaviewm14
application/x-msmediaviewmvb
application/x-msmetafilewmf
application/x-msmoneymny
application/x-mspublisherpub
application/x-msschedulescd
application/x-msterminaltrm
application/x-mswritewri
application/x-netcdfcdf
application/x-netcdfnc
application/x-perfmonpma
application/x-perfmonpmc
application/x-perfmonpml
application/x-perfmonpmr
application/x-perfmonpmw
application/x-pkcs12p12
application/x-pkcs12pfx
application/x-pkcs7-certificatesp7b
application/x-pkcs7-certificatesspc
application/x-pkcs7-certreqrespp7r
application/x-pkcs7-mimep7c
application/x-pkcs7-mimep7m
application/x-pkcs7-signaturep7s
application/x-shsh
application/x-sharshar
application/x-shockwave-flashswf
application/x-stuffitsit
application/x-sv4cpiosv4cpio
application/x-sv4crcsv4crc
application/x-tartar
application/x-tcltcl
application/x-textex
application/x-texinfotexi
application/x-texinfotexinfo
application/x-troffroff
application/x-trofft
application/x-trofftr
application/x-troff-manman
application/x-troff-meme
application/x-troff-msms
application/x-ustarustar
application/x-wais-sourcesrc
application/x-x509-ca-certcer
application/x-x509-ca-certcrt
application/x-x509-ca-certder
application/ynd.ms-pkipkopko
application/zipzip
audio/basicau
audio/basicsnd
audio/midmid
audio/midrmi
audio/mpegmp3
audio/x-aiffaif
audio/x-aiffaifc
audio/x-aiffaiff
audio/x-mpegurlm3u
audio/x-pn-realaudiora
audio/x-pn-realaudioram
audio/x-wavwav
image/bmpbmp
image/cis-codcod
image/gifgif
image/iefief
image/jpegjpe
image/jpegjpeg
image/jpegjpg
image/pipegjfif
image/svg+xmlsvg
image/tifftif
image/tifftiff
image/x-cmu-rasterras
image/x-cmxcmx
image/x-iconico
image/x-portable-anymappnm
image/x-portable-bitmappbm
image/x-portable-graymappgm
image/x-portable-pixmapppm
image/x-rgbrgb
image/x-xbitmapxbm
image/x-xpixmapxpm
image/x-xwindowdumpxwd
message/rfc822mht
message/rfc822mhtml
message/rfc822nws
text/csscss
text/h323323
text/htmlhtm
text/htmlhtml
text/htmlstm
text/iulsuls
text/plainbas
text/plainc
text/plainh
text/plaintxt
text/richtextrtx
text/scriptletsct
text/tab-separated-valuestsv
text/webviewhtmlhtt
text/x-componenthtc
text/x-setextetx
text/x-vcardvcf
video/mpegmp2
video/mpegmpa
video/mpegmpe
video/mpegmpeg
video/mpegmpg
video/mpegmpv2
video/quicktimemov
video/quicktimeqt
video/x-la-asflsf
video/x-la-asflsx
video/x-ms-asfasf
video/x-ms-asfasr
video/x-ms-asfasx
video/x-msvideoavi
video/x-sgi-moviemovie
x-world/x-vrmlflr
x-world/x-vrmlvrml
x-world/x-vrmlwrl
x-world/x-vrmlwrz
x-world/x-vrmlxaf
x-world/x-vrmlxof

主要用于动态生成网页文件,向浏览器传输时,response header 所需的文件类型mime

一步步教你编写不可维护的PHP代码

随着失业率越来越高( 不是中国 ),很多人意识到保全自己的工作是多么的重要。那么,什么是保住自己工作,并让自己无可替代的好方法呢?一个很简单的事实是只要你的代码没有人能够维护,那么你就成功保住了工作。编写不可维护的代码是一个特殊的技能,但奇怪的是,似乎对某些开发者来说是很自然的。不过对于剩下的开发者来说,这里有一些技巧和提示来让你开始写不可维护的代码。

首先要做的事情

第一步,从找工作开始。你应该寻找合适的公司,在那里你可以尽情发挥并实现你那不可维护的潜力。 你不一定需要成为公司的 PHP 大牛如果是那更好。找工作时,如果工作描述提到需要从其它的迁移到 PHP (所以你知道你会做主),或者也可以搜索那种需要10年 PHP5 工作经验的误导性工作,再加上熟练使用 FrontPage 和 Netscape Composer 。一旦你获得这种千载难逢的机会,从第一天开始就要采取措施。在会议上发言,让你的意见被听到。大胆谈论面向对象的架构设计,企业,改革方案,怎样让够好变得更好,当然你也得做出相应的承诺。确保每个人在重要的编码环节都咨询你的意见。

继续阅读“一步步教你编写不可维护的PHP代码”

工程师最重要的能力是什么

        手机响了,是一个实施工程师打过来的,说现场的数据采集不上来,问怎么解决。我问软件的版本,仪器的型号,操作系统的信息,具体的问题描述。我告诉他可能是什么原因,给了一个解决办法,让他尝试一下。他试了一下后,说还是不行,又问怎么办,于是我又给他一个办法,他又去尝试了,反馈回来说还是不行,又问我怎么办。我然后我又给他提供方案,继续解决……终于解决了。

        这种场景不是一次两次了,也不是一个人两个人用这样的方式解决问题了。实际上,问题并不复杂,有些甚至很简单,简单到只需要把重启一下软件就可解决的地步。但是,很多人依然不知道怎样解决问题。类似的情况还包括开发人员在编程遇到bug的时候,无法独立搞定,也一直问同事该怎么解决。

        我们部门有个架构师,他一直从事的是c++语言的开发工作,几乎c++任何方面的疑难问题他都能很快解决。项目上需要使用移动应用、大数据技术、java、js、python等不同开发语言开发时,他也能从头很快学起,为大家指明方向,搭建框架,遇到新问题,总能找到解决办法将问题解决,保证了项目的进度和质量。

继续阅读“工程师最重要的能力是什么”

win10出现“你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问。”

公司无法访问无需输入账号密码的匿名共享 \\192.168.1.2
1.win+R 输入gpedit.msc
2.计算机配置—管理模板–网络—lanman 工作站—找到“启用不安全的来宾登录” 选择 已启用。
3.点击确定可以正常访问。

win10默认设置提升了局域网安全性,有一定程度上能阻止局域网病毒文件传播

MySQL8.0.16修改默认文字编码方法

按照网络上的旧方法,尝试修改了一个晚上,brew重装了好多次mysql了,还没搞定。

找到简书上一个大哥的方法,测试成功,特地写个备忘。

[mysqld]
# Only allow connections from localhost
bind-address = 0.0.0.0
socket = /tmp/mysql.sock
default-storage-engine=INNODB

loose_mysqlx_port=33060

character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'


[client]
default-character-set = utf8mb4
socket = /tmp/mysql.sock

[mysql]
default-character-set = utf8mb4

泪流满面啊