插件冲突导致emlog的rss输出出错 emlog

先来看一下插件冲突导致rss输出出错的样子吧:

2015-08-29 22_52_00.png

估计很多的朋友都有过这种情况吧,rss.php输出出错,我也是,一开始以为是数据库表出错了,还使用工具箱修复,结果发现,还是不可以的。于是就把所有的插件都停用了,然后,慢慢测试,发现下面几个插件在激活状态都会导致rss.php输出出错:

1.奇遇的防垃圾评论插件 地址:http://www.emlog.net/plugin/10 希望奇遇可以修复

2.二今的代码演示插件,地址:http://www.emlog.net/plugin/166 希望而今可以修复

3.vibbow的索引通知插件 地址:http://www.emlog.net/plugin/9 希望可以修复

这些都是自己在最新版的emlog5.31上测试发现的,以为这些插件能够使用,但是版本上没有更新,所以兼容性不是很好。当然了,作者有时间最好修复一下,仅此小计一下,方便那些对于rss.php出错但是不知道什么原因的童鞋有点帮助,禁用这些插件就OK了,这些插件其实挺好的,只是没有升级更新。

禁用这些插件之后,rss输出就OK了:

2015-08-29 22_52_30.png


admin 发布于  2015-8-29 21:52 

博客决定取消使用pjax技术加载页面,简单分析 PHP

pjax是对ajax + pushState的封装,让你可以很方便的使用pushState技术。

同时支持了缓存和本地存储,下次访问的时候直接读取本地数据,无需在次访问。

并且展现方式支持动画技术,可以使用系统自带的动画方式,也可以自定义动画展现方式。

这是它的开源主页 : https://github.com/welefen/pjax

我的博客也在前不久使用这项技术,具体的教程请前往Finlly博客查看:关于PJAX局部刷新 ;


但是使用之后,发现有如下几个问题:

1:我得服务器资源占用比不使用pjax之前多了30%,大神勿笑,也可能是我小菜不会优化;

2:加载之后会发现,会出现不能够加载其他的js,比如不能够加载第三方分享的js文件,或者是代码高亮插件的js,导致代码的高亮,复制,又或者是图片highslide插件等功能失效;

下面几点来至于互联网:

3:这个技术使用的场景很受限制,据我所知真正用这个技术的网站很少

因为html5的新api:pushState和replaceState的出现,让url脱离了#号。更重要的是支持了浏览器前进后退的事件触发onpopstate

4:不利于SEO,当然,你可以针对爬虫做处理,但那是自找麻烦

5:不同页面引用的资源很可能不同,切换页面需要动态加载新的js和css,容易和旧的CSS和JS产生冲突

6:不刷新页面,意味着页面占用的资源得不到释放,如果有内存泄露问题,页面会越来越卡

不知道各位有什么好的优化方案没,或者是在使用pjax过程中有哪些问题。

题外话:还是HTML5方便,赶紧学习html5,因为html5的新api:pushState和replaceState的出现,支持浏览器前进后退的事件触发onpopstate,pushState的功能具体来说就是修改url而页面无跳转,并且该url会被存放在历史记录中

当然为了满足某些需要你不需要存放在历史记录中就需要使用replaceState

而浏览器上前进和后退都会触发onpopstate能获取你设置的State对象


拿welefen的pjax说下原理:

1.在用户超链请求的时候拦截超链

2.拦截后同时发出两种行为 ajax请求 以及 pushState


实际上他的设计是线性的,在超链被拦截后才会触发。

我更倾向于观察者模式,state被改变的时候触发。

如果你真的想用在项目中我推荐你直接使用 balupton/history.js · GitHub

在不支持html5的浏览器上采用了hash作为代替并且监听了statechange事件



admin 发布于  2015-8-26 12:56 

为Wampserver My Projects自动添加localhost前缀 技术文章

我们安装好wampserver最新版之后,在菜单里面就会有My Project选项:

01.png

我们在wamp的默认www目录(根据你自己的安装路径)下面创建两个文件夹,emlog531和JavaScriptStudy,重启wampserver就可以在My Project里发现了。

但是我们默认打开其中的任意一个都会发现在浏览器里面的路径是这个样子的:

2015-08-26 09_23_53.png

根本就不能打开。。。。

我们打开localhost,在下面的 Your Projects 里面会发现打开项目依然不能访问,下图是我修改之后的,路径自动加上了localhost,就可以正常访问了,

2015-08-26 09_27_44.png

2015-08-26 09_25_32.png

而且修改之后我们直接在wamp的托盘菜单里面的菜单里面的My Projects项目可以直接在浏览器打开并正常访问,具体的修改反方法如下:

1>打开 \wamp\www\index.php

修改如下这行代码:


$suppress_localhost = true; 修改成 :$suppress_localhost = false;


2015-08-26 09_24_36.png

2>打开 \wamp\scripts\refresh.php

修改如下这行代码:


 Parameters: "http://'.$projectContents[$i].'/";  修改成 :  Parameters: "http://localhost/'.$projectContents[$i].'/";  其实就是在 http://后添加 localhost/


2015-08-26 10_09_13.png

完成上面两部之后就可以重新启动wampserver看效果了。一般就成功了。如果还是不行,那就参考这篇文章:



自定义wamp_server的网站根目录

相关文章推荐:

修改WampServer的默认浏览器小计--mrxn's Blog

修改wamp中的MySQL默认密码

在 WampServer 上手工安装 PHP 的多个版本


admin 发布于  2015-8-26 08:18 

WebStorm-PHPStorm-RubyMine-Pycharm-最新通用破解注册机 破解软件

WebStorm jetbrains公司旗下一款JavaScript 开发工具。被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。但是他是收费的!下面是注册成功的截图:

01.png

今天,Mrxn教你如何破解她!想上就上!哈哈,别邪恶、、、

最新版是10.0.4的,官网下载链接:http://download-cf.jetbrains.com/webstorm/WebStorm-10.0.4.exe 下载后,安装完毕,(如果安装不会,就别往下看了,免得你头晕眼花-_-|);运行我下面提供的注册机,直接打开,输入你想要注册的名字,点击Generate,OK,再点击copy,然后粘贴到你的注册框里面久OK。

02.png

如第一图:点击左下角的Register,然后打开注册机,输入你想要注册的名字,点击Generate,OK,再点击copy然后粘贴到你的注册框里面久OK。

03.png

最后,一个小技巧:代码自动换行设置:view - Active Editor - Use Soft Wraps 如图所示:

04.png 


WebStorm系列破解注册机大小:200KB | 来源:百度网盘
已经过安全软件检测无毒,请您放心下载。

admin 发布于  2015-8-22 15:01 

css样式设置小技巧汇总 PHP

水平居中设置-行内元素


如果被设置元素为文本图片行内元素时,水平居中是通过给父元素设置 text-align:center 来实现的。如下代码:

html代码:

<body>
  <div class="txtCenter">我是文本,哈哈,我想要在父容器中水平居中显示。</div>
</body>

css代码:

<style>
  div.txtCenter{ text-align:center; }
</style>

水平居中设置-定宽块状元素

当被设置元素为块状元素时用 text-align:center 就不起作用了,这时也分两种情况:定宽块状元素和不定宽块状元素。这一小节我们先来讲一讲定宽块状元素。

满足定宽块状两个条件的元素是可以通过设置左右margin”值为“auto”来实现居中的。我们来看个例子就是设置 div 这个块状元素水平居中:

html代码:

<body>
  <div>我是定宽块状元素,哈哈,我要水平居中显示。</div>
</body>

css代码:

<style>
div{
    border:1px solid red;/*为了显示居中效果明显为 div 设置了边框*/

    width:500px;/*定宽*/ margin:20px auto;/* margin-left 与 margin-right 设置为 auto */ }

</style>

也可以写成:

margin-left:auto;
margin-right:auto;

注意:元素的“上下 margin” 是可以随意设置的。

水平居中总结-不定宽块状元素方法(一)

在实际工作中我们会遇到需要为“不定宽度的块状元素”设置居中,比如网页上的分页导航,因为分页的数量是不确定的,所以我们不能通过设置宽度来限制它的弹性。

不定宽度的块状元素有三种方法居中(这三种方法目前使用的都比多):

  1. 加入 table 标签
  2. 设置 display;inline 方法
  3. 设置 position:relative 和 left:50%;

这一小节我们来讲一下第一种方法:

第一步:为需要设置的居中的元素外面加入一个 table 标签 ( 包括 <tbody>、<tr>、<td> )。

第二步:为这个 table 设置“左右 margin 居中”(这个和定宽块状元素的方法一样)。

举例如下:

html代码:

<div> <table> <tbody>
    <tr><td> <ul>
        <li><a href="#">1</a></li>
        <li><a href="#">2</a></li>
        <li><a href="#">3</a></li>
    </ul>  </td></tr>
  </tbody>
</table> </div>

css代码:

<style> table{
    margin:0 auto;
} ul{list-style:none;margin:0;padding:0;}
li{float:left;display:inline;margin-right:8px;}
</style>

水平居中总结-不定宽块状元素方法(二)

第二种方法:改变块级元素的 dispaly 为 inline 类型,然后使用 text-align:center 来实现居中效果。如下例子:

html代码:

<body>
<div class="container">
    <ul>
        <li><a href="#">1</a></li>
        <li><a href="#">2</a></li>
        <li><a href="#">3</a></li>
    </ul>
</div>
</body>

css代码:

<style>
.container{ text-align:center; }
.container ul{
    list-style:none;
    margin:0;
    padding:0; display:inline; }
.container li{
    margin-right:8px;
    display:inline;
}
</style>

这种方法相比第一种方法的优势是不用增加无语义标签,简化了标签的嵌套深度,但也存在着一些问题:它将块状元素的 display 类型改为 inline,变成了行内元素,所以少了一些功能,比如设定长度值。

水平居中总结-不定宽块状元素方法(三)

方法三:通过给父元素设置 float,然后给父元素设置 position:relative 和 left:50%,子元素设置 position:relative 和 left:-50% 来实现水平居中。

代码如下:

<body>
<div class="container">
    <ul>
        <li><a href="#">1</a></li>
        <li><a href="#">2</a></li>
        <li><a href="#">3</a></li>
    </ul>
</div>
</body>

css代码:

<style>
.container{  float:left;
    position:relative;
    left:50% }

.container ul{
    list-style:none;
    margin:0;
    padding:0;  position:relative;
    left:-50%; }
.container li{float:left;display:inline;margin-right:8px;}
</style>

这种方法可以保留块状元素仍以 display:block 的形式显示,优点不添加无语议表标签,不增加嵌套深度,但它的缺点是设置了 position:relative,带来了一定的副作用。

这三种方法使用得都非常广泛,各有优缺点,具体选用哪种方法,可以视具体情况而定。

垂直居中-父元素高度确定的单行文本

父元素高度确定的单行文本的竖直居中的方法是通过设置父元素的 heightline-height 高度一致来实现的。如下代码:

<div class="container">
    hi,Mrxn!
</div>

css代码:

<style>
.container{ height:100px;
    line-height:100px; background:#999;
}
</style>

垂直居中-父元素高度确定的多行文本(方法一)

父元素高度确定的多行文本图片块状元素的竖直居中的方法有两种:

方法一:使用插入 table (包括tbody、tr、td)标签,同时设置 vertical-align:middle。

说到竖直居中,css 中有一个用于竖直居中的属性 vertical-align,但这个样式只有在父元素为 td 或 th 时,才会生效。所以又要插入 table 标签了。下面看一下例子:

html代码:

<body> <table><tbody><tr><td class="wrap"> <div>
    <p>看我是否可以居中。</p>
    <p>看我是否可以居中。</p>
    <p>看我是否可以居中。</p>
    <p>看我是否可以居中。</p>
    <p>看我是否可以居中。</p>
</div> </td></tr></tbody></table> </body>

css代码:

table td{height:500px;background:#ccc}

因为 td 标签默认情况下就默认设置了 vertical-align 为 middle,所以我们不需要显式地设置了。

垂直居中-父元素高度确定的多行文本(方法二)

在 chrome、firefox 及 IE8 以上的浏览器下可以设置块级元素的 display 为 table-cell,激活 vertical-align 属性,但注意 IE6、7 并不支持这个样式。

html代码:

<div class="container">
    <div>
        <p>看我是否可以居中。</p>
        <p>看我是否可以居中。</p>
        <p>看我是否可以居中。</p>
        <p>看我是否可以居中。</p>
        <p>看我是否可以居中。</p>
    </div>
</div>

css代码:

<style>
.container{
    height:300px;
    background:#ccc;  display:table-cell;/*IE8以上及Chrome、Firefox*/ vertical-align:middle;/*IE8以上及Chrome、Firefox*/
}
</style>

这种方法的好处是不用添加多余的无意义的标签,但缺点也很明显,它的兼容性不是很好,不兼容 IE6、7。

隐性改变display类型

有一个有趣的现象就是当为元素(不论之前是什么类型元素,display:none 除外)设置以下 2 个句之一:

  1. position : absolute
  2. float : left 或 float:right

元素会自动变为以 display:inline-block 的方式显示,当然就可以设置元素的 width 和 height 了且默认宽度不占满父元素。

如下面的代码,小伙伴们都知道 a 标签是行内元素,所以设置它的 width 是 没有效果的,但是设置为 position:absolute 以后,就可以了。

<div class="container">
    <a href="#" title="">请单击这里</a>
</div>

css代码

<style>
.container a{ position:absolute; width:200px;
    background:#ccc;
}
</style>



admin 发布于  2015-8-19 19:09 

Linux内核级后门的原理及简单实战应用 Linux

以下代码均在linux i86 2.0.x的内核下面测试通过。它也许可以在之前的版本通过,但并没有被测试过。因为从2.1.x内核版本就引入了相当大的改变,显著地内存管理上的差别,但这些不是我们现在要讨论的内容。



用户空间与内核空间



linux是一个具有保护模式的操作系统。它一直工作在i386 cpu的保护模式之下。



内存被分为两个单元:内核区域和用户区域。内核区域存放并运行着核心代码,当然,顾名思义,用户区域也存放并运行用户程序。当然,作为用户进程来讲它是不能访问内核区域内存空间以及其他用户进程的地址空间的。



核心进程也有同样的情况。核心代码也同样不能访问用户区地地址空间。那么,这样做到底有什么意义呢?我们假设当一个硬件驱动试图去写数据到一个用户内存
空间的程序里的时候,它是不可以直接去完成的,但是它可以利用一些特殊的核心函数来间接完成。同样,当参数需要传递地址到核心函数中时,核心函数也不能直
接的来读取该参数。同样的,它可以利用一些特殊的核心函数来传递参数。



这里有一些比较有用的核心函数用来作为内核区与用户区相互传递参数用。


#include <asm/segment.h>
get_user(ptr)





从用户内存获取给定的字节,字,或者长整形。这只是一个宏(在核心代码里面有此宏的详细定义),并且它依据参数类型来确定传输数量。所以你必须巧妙地利用它。



put_user(ptr)和get_user()非常相似,但是,它不是从用户内存读取数据,而是想用户内存写数据。


memcpy_fromfs(void *to,
const void *from,unsigned long n)





从用户内存中的from拷贝n个字节到指向核心内存的指针to。


memcpy_tofs(void *to,const *from,
unsigned long n)




从核心内存中的*from拷贝n个字节数据到用户内存中的*to。

系统调用

大部分的c函数库的调用都依赖于系统调用,就是一些使用户程序可以调用的简单核心包装函数。这些系统调用运行在内核本身或者在可加载内核模块中,就是一些可动态的加载卸载的核心代码。

就象MS-DOS和其他许多系统一样,linux中的系统调用依赖一个给定的中断来调用多个系统调用。linux系统中,这个中断就是int 0x80。当调用'int 0x80'中断的时候,控制权就转交给了内核(或者,我们确切点地说, 交给_system_call()这个函数), 并且实际上是一个正在进行的单处理过程。

* _system_call()是如何工作的?

首先,所有的寄存器被保存并且%eax寄存器全面检查系统调用表,这张表列举了所有的系统调用和他们的地址信息。它可以通过extern void *sys_call_table[]来被访问到。该表中的每个定义的数值和内存地址都对应每个系统调用。大家可以在/usr/include/sys/syscall.h这个头中找到系统调用的标示数。

他们对应相应的SYS_systemcall名。假如一个系统调用不存在,那么它在sys_call_table中相应的标示就为0,并且返回一个出错信息。否则,系统调用存在并在表里相应的入口为系统调用代码的内存地址。这儿是一个有问题的系统调用例程:

[root@plaguez kernel]# cat no1.c
#include <linux/errno.h>
#include <sys/syscall.h>
#include <errno.h>

extern void *sys_call_table[];

sc()
{ // 165这个系统调用号是不存在的。
    __asm__(
        "movl $165,%eax
             int $0x80");
}

main()
{
    errno = -sc();
    perror("test of invalid syscall");
}
[root@plaguez kernel]
# gcc no1.c
[root@plaguez kernel]
# ./a.out
test of invalid syscall:
Function not implemented
[root@plaguez kernel]
# exit





系统控制权就会转向真正的系统调用, 用来完成你的请求并返回。 然后_system_call()调用_ret_from_sys_call()来检查不同的返回值, 并且最后返回到用户内存。


  • libc



    这int $0x80 并不是直接被用作系统调用; 更确切地是,libc函数,经常用来包装0x80中断,这样使用的。



    libc通常利用_syscallX()宏来描述系统调用,X是系统调用的总参数个数。



    举个例子吧,
    libc中的write(2)就是利用_syscall3这个系统调用宏来实现的,因为实际的write(2)原型需要3个参数。在调用0x80中断之
    前,这个_syscallX宏假定系统调用的堆栈结构和要求的参数列表,最后,当 _system_call()(通过int
    &0x80来引发)返回的时候,_syscallX()宏将会查出错误的返回值(在%eax)并且为其设置errno。

    让我们看一下另一个write(2)例程并看看它是如何进行预处理的。





    [root@plaguez kernel]# cat no2.c
    #include <linux/types.h>
    #include <linux/fs.h>
    #include <sys/syscall.h>
    #include <asm/unistd.h>
    #include <sys/types.h>
    #include <stdio.h>
    #include <errno.h>
    #include <fcntl.h>
    #include <ctype.h>
    
    

    _syscall3(ssize_t,write,int,fd,const void ,buf,size_t,count);/构建一个write调用*/

    main()
    {
    char *t = "this is a test.\n";
    write(0, t, strlen(t));
    }
    [root@plaguez kernel]

    gcc -E no2.c > no2.C

    [root@plaguez kernel]

    indent no2.C -kr

    indent:no2.C:3304: Warning:
    old style assignment ambiguity in
    "=-". Assuming "= -"

    [root@plaguez kernel]# tail -n 50 no2.C

    9 "no2.c" 2

    ssize_t write(int fd,
    const void *buf, size_t count)
    {
    long res;
    asm volatile("int $0x80":"=a"
    (res):"0"(4), "b"((long) (fd)),
    "c"((long) (buf)),
    "d"((long) (count)));
    if (
    res >= 0)
    return (ssize_t) res;
    errno = -
    res;
    return -1;
    };

    main()
    {
    char *t = "this is a test.\n";
    write(0, t, strlen(t));
    }
    [root@plaguez kernel]# exit








    注意那个write()里的"0"这个参数匹配SYS_write,在/usr/include/sys/syscall.h中定义。


    • 构建你自己的系统调用。



      这里给出了几个构建你自己的系统调用的方法。举个例子,你可以修改内核代码并且加入你自己的代码。一个比较简单可行的方法,不过,一定要被写成可加载内核模块。



      没有一个代码可以象可加载内核模块那样可以当内核需要的时候被随时加载的。我们的主要意图是需要一个很小的内核,当我们需要的时候运行insmod命令,给定的驱动就可以被自动加载。这样卸除来的lkm程序一定比在内核代码树里写代码要简单易行多了。


    • 写lkm程序

      一个lkm程序可以用c来很容易编写出来。它包含了大量的#defines,一些函数,一个初始化模块的函数,叫做init_module(),和一个卸载函数:cleanup_module()。

      这里有一个经典的lkm代码结构:




      #define MODULE
      #define __KERNEL__
      #define __KERNE_SYSCALLS__
      
      

      include <linux/config.h>

      ifdef MODULE

      include <linux/module.h>

      include <linux/version.h>

      else

      define MOD_INC_USE_COUNT

      define MOD_DEC_USE_COUNT

      endif

      include <linux/types.h>

      include <linux/fs.h>

      include <linux/mm.h>

      include <linux/errno.h>

      include <asm/segment.h>

      include <sys/syscall.h>

      include <linux/dirent.h>

      include <asm/unistd.h>

      include <sys/types.h>

      include <stdio.h>

      include <errno.h>

      include <fcntl.h>

      include <ctype.h>

      int errno;

      char tmp[64];

      / 假如,我们要用到ioctl调用 /
      _syscall3(int, ioctl, int, d,
      int, request, unsigned long, arg);

      int myfunction(int parm1,char parm2)
      {
      int i,j,k;
      /
      ... */
      }

      int init_module(void)
      {
      / ... /
      printk("\nModule loaded.\n");
      return 0;
      }

      void cleanup_module(void)
      {
      / ... /
      }








      检查代码中的


      #defines (#define MODULE, #define __KERNEL__)
      和
      #includes (#include <linux/config.h> ...)





      一定要注意的是我们的lkm讲要被运行在内核状态,我们就不能用libc包装的函数了,但是我们可以通过前面所讨论的_syscallX()宏来构建系
      统调用。你可以这样编译你的模块'gcc -c -O3 module.c' 并且利用'insmod module.o'来加载。



      提一个建议,lkm也可以用来在不完全重建核心代码的情况下来修改内核代码。举个例子, 你可以修改write系统调用让它隐藏一部分给定的文件,就象我们把我们的backdoors放到一个非常好的地方:当你无法再信任你的系统内核的时候会怎么样呢?


      • 内核和系统调用后门



        在简单介绍了上述理论,我们主要可以用来做什么呢。我们可以利于lkm截获一些对我们有影响的系统调用,这样可以强制内核按照我们的方式运行。例如:我们可以利用ioctl系统调用来隐藏sniffer所造成的网卡PROMISC模式的显示。非常有效。



        去改变一个给定的系统调用,只需要在你的lkm程序中增加一个定义extern void
        *sys_call_table[],并且利用init_module()函数来改变sys_call_table里的入口来指向我们自己的代码。改变后
        的调用可以做我们希望它做的一切事情,利用改变sys_call_table来导出更多的原系统调用。



admin 发布于  2015-8-19 01:32 

emlog静态化插件有可能出现的几个问题/bug及解决方法 emlog

今天旧城博客来说加友链,我添加了之后发现,根本没有显示,ctrl+F5刷新,清空浏览器cookies,换浏览器,都试过了,还是没有显示,这是我又想是不是因为CDN的原因,于是关掉CDN,发现问题依旧存在;但是由于当时有事情没时间解决,就放了一下,就在刚刚,朋友们的评论信息也不能及时显示了,同时还测试了一下更换模板,发现居后台换了模板之后,去首页刷新还是原来的模板,这可把我吓一跳,还以为是服务器出问题了,于是登陆服务器,都检查了一遍,发现没有什么事儿。。。我就纳闷了。。。试了一下后台数据的更新缓存,一样没有效果。

就在准备找人询问原因的时候,突然灵光一闪!嘿嘿,插件!嗯,我试着emlog静态化插件禁止了,更新缓存,首页已刷新,OK,各项恢复正常。。。其实之前也遇到过因为这个emlog静态化插件和CSRF保护脚本插件有冲突,开启CSRF保护脚本插件的时候使用emlog静态化插件就会出现权限问题403 forbidden这类的问题。之前还遇到过类似的插件冲突问题,插件打开顺序不同,结果显示的界面就会不同,或者是功能就会不同程度的变化。。。

总结一下:emlog程序很简洁,通过插件可以是程序变得功能多且强大,但是就会导致程序变慢,各种JS冲突,权限分配、判断等等一系列问题,所以当你的emlog遇到了一些小问题问题(显示,排版等)的时候,可以尝试先把所有的插件禁止了,如果你的插件比较多,可以选择上传官方的emlog工具箱插件,可以一键禁止所有已开启的插件,当然你在排除问题之前可以先备份一下相关数据,到时候找到了问题直接恢复数据,再去禁用相关插件就可以了,这样省时省力。最后呢,希望新版本的emlog6正式版发布的时候可以解决这些问题,同时呢,也希望各位emlog的开发者能够注意,考虑这些问题,在制作插件的时候多考虑一下插件的兼容性。以上内容只是我的个人见解,希望没有给各位看官带来不快,如有,对不起,请 Ctrl+W 关闭当前页。


admin 发布于  2015-8-17 21:21 

各大音乐网站接口,懂得人自然懂 影音分享

360离线接口:

<span id="tbOffline" class="y-btn y-btn-gray offline" data-cn="offline">

        <i class="icon icon-offline"></i><span class="label">离线下载</span></span>



酷狗音乐接口:

VIP接口:http://trackercdn.kugou.com/i/?cmd=4&amp;hash={$Hash}&amp;key={$md5($hash . "kgcloud")}&pid=1&forceDown=0&vip=1

安卓接口:http://trackercdn.kugou.com/i/v2/?appid=1005&amp;pid=2&amp;cmd=25&amp;key={$md5($hash . "kgcloud")}&hash={$Hash}&version=7472&behavior=play&with_res_tag=1



酷狗视频接口:http://static.kgimg.com/common/swf/video/videoPlayer.swf?skinurl=http://static.kgimg.com/common/swf/video/skin.swf&amp;aspect=true&amp;url={Mp4或Flv类型的Url}&amp;autoplay=true&amp;fullscreen=true&amp;initfun=flashinit



网易视频接口:http://s1.music.126.net/style/swf/MVPlayer.swf?murl={Mp4或Flv类型的Url}&amp;autoPlay=true



SongTaste接口1:http://www.songtaste.com/api/android/songurl.php?songid={$SongId}

SongTaste接口2:http://songtaste.com/play.php?song_id={$SongId}



电信爱音乐接口:www.118100.cn/v5/action/secweborder/v3/songsdata.do?it=1&songId={$SongId}  取ququAddr处代码用Base64解码

联通音乐接口:

http://www.10155.com/player/playContentId.do?songIds={$SongId}

http://www.10155.com/player/playSongInfos.do?contentIds={$contentIds}_{$SongId}_not_not_not_not_not



酷狗51Sing接口1:http://mobileapi.5sing.kugou.com/song/transcoding?songid=$SongId}&amp;songtype={$SongType}

酷狗51Sing接口2:http://5sing.kugou.com/m/detail/{$SongType}-{$SongId}-1.html



酷我音乐接口1:http://antiserver.kuwo.cn/anti.s?format={$SongType}%7Cmp3&amp;rid=MUSIC_{$SongId}&amp;response=url&amp;type=convert_url

酷我音乐接口2:http://player.kuwo.cn/webmusic/st/getNewMuiseByRid?rid=MUSIC_{$SongId}



网易云音乐接口:http://music.163.com/api/song/detail/?id={$SongId}&amp;ids=%5B{$SongId}%5D&amp;csrf_token=



百度音乐接口1:

①:http://music.baidu.com/data/music/fmlink?songIds={$SongId}&amp;type={$SongType}

②:http://music.baidu.com/data/music/fmlink?songIds={$SongId}&amp;type={$SongType}&amp;rate={$Rate}



百度音乐接口2:

①:http://ting.baidu.com/data/music/links?songIds={$SongId}&amp;type={$SongType}

②:http://ting.baidu.com/data/music/links?songIds={$SongId}&amp;type={$SongType}&amp;rate={$Rate}



咪咕音乐接口:http://music.migu.cn/webfront/player/findsong.do?itemid={$SongId}&amp;type=song



搜狗音乐:http://mp3.sogou.com/tiny/song?query=getlyric&amp;json=1&amp;tid={$Tid}



Echo回声音乐:http://echosystem.kibey.com/sound/info?sound_id={$SongId}



QQ音乐接口:

http://s.plcloud.music.qq.com/fcgi-bin/fcg_yqq_song_detail_info.fcg?songmid={$SongMid}

http://tsmusic24.tc.QQ.com/{$SongId}.mp3

http:/ /stream.QQmusic.tc.qq.com/{$SongId}.mp3

http://tsmusic128.tc.qq.com/{$SongId+30000000}.mp3 (请计算出结果)

http://tsmusic128.tc.qq.com/{$SongId+40000000}.ogg (请计算出结果)

http://tsmusic24.tc.qq.com/{$SongId}.m4a

http://thirdparty.gtimg.com/{$SongId}.m4a?fromtag=38

http://thirdparty.gtimg.com/C100{$SongId}.m4a?fromtag=38


admin 发布于  2015-8-1 18:48 

自动压缩、加密 CSS/JavaScript 优化网站性能 PHP

关于压缩

压缩 CSS 的方法, 无外乎缩写代码和清除多余字符来实现, 平时只要养成使用缩写的技巧就可以明显减少最终代码的整体大小. 在此我就不做过多的描述, 后文也会有简单的压缩代码.

相比于前者, JavaScript 的压缩方式就比较丰富工具也很多, 常用的有: Packer/YUI-compressor/Dojo Compressor 等, 本人比较喜欢用 Packer 来压缩, 压缩比例可以达到 50% 上下.

我不知道读者是如何对 CSS/JavaScript 进行处理的, 但在此之前我都是线下压缩然后在上传, 但还是有些麻烦且不便于管理. 于是最近正好找到一个 Packer 的后端类, 在不改动原 CSS/JavaScript 的前提下实时压缩文件并输出, 可以更好的解决我目前的困扰.

实现过程

首先在下载:packer.php-1.1.zip 并解压 class.JavaScriptPacker.php 到你的当前主题目录, 然后在相同位置创建compress.php 文件, 内容如下:


<?php

'javascript', 'css' => 'css');

if (file_exists($path)) { // 判断文件存在的情况下在执行压缩工作
  Header('Content-Type: text/' . $head[$info] . '; charset=utf-8'); // 必需定义相应的文件头
  $script = file_get_contents($path); //读取文件

  if ($info != 'css') { // 判断不同的文件类型做处理
    require 'class.JavaScriptPacker.php'; // 引用 Packer 类
    $packer = new JavaScriptPacker($script, 'Normal', true, false); // 设置压缩参数
    $packed = $packer->pack(); // 压缩并写入变量
  } else { // 处理 CSS 文件
    $packer = preg_replace("!/\*[^*]*\*+([^/][^*]*\*+)*/!", "", $script); // 清除多余注释
    $packed = str_replace(array("\r\n", "\r", "\n", "\t", "  ", "    ", "    "), null, $packer); // 清除多余换行、空格、缩进符
  }

  echo $packed; // 输出所压缩的内容
}
;?>



然后在相同的位置创建一个 .htaccess 文件, 内容如下:



RewriteEngine On
RewriteRule (.*.(js|css))$ /compress.php?name=$1

后记

该方法在自己的vps+Apache 环境下通过, 直接访问相应文件的绝对路径就会自动压缩并输出, 但是如果你的主机不支持 Rewrite 功能的话, 可以跳过创建 .htaccess 然后通过 http://youdomain.com/content/templates/主题目录/compress.php?name=文件名称.css/js 来调用文件.



admin 发布于  2015-8-1 13:17 

IDM 6.23 Build 17最新破解版安装包免费下载 破解软件

01.png

 IDM 6.23 Build 17更新:


这是官方原话:在7月24日更新,增加了对微软Edge 浏览器的支持.修复了一些漏洞.

破解方法:

在原来已经破解好的版本上 直接选择 更新即可升级成最新版.

如果未破解过的,请按以下步骤破解:

1.下载破解注册机:点击查看破解注册机

2.安装最新版的idm(已安装的,略过,未安装的,去官网下载)

3.运行idm破解注册机:

然后点击 Patch

02.png

之后会出现一个输入框 输入firstname   随便输入 Eg:Mrxn
然后会弹出第二个输入框  last name  同样随便输入 Eg:net

切记:破解期间 请关闭IDM
链接如有失效,请及时通知我.



admin 发布于  2015-7-26 16:11