2013年1月25日星期五

折腾三天了,终于解决了centos firefox flash 不能播放的问题。



插件正常安装,就是显示个黑屏,琢磨了半天,估计是因为没有安装curl 的问题,

解决:

yum install curl compat-libstdc++-33 glibc nspluginwrapper

重启firefox ,ok 。给大家做个参考

LINUX mozilla firefox 网页视频无法播放的解决


这个问题困扰了我很久,相信对ubuntu的初学者大都会遇到这个问题,再次给大家分享下我的方法:

       1.首先,确保你已经把显示的“安装缺失插件”安装好,这时,比如说,打开
          http://v.hoopchina.com/v237459.html这个视频网址,点击后会出现弹窗,但不能播放。
       2.然后根据火狐浏览器所提供的网址,我下载到“install_flash_player_10_linux.tar.gz”文件。          
       在下面的tar命令中,使用选项“z”是因为该文件的后缀为“.gz”,这表示此文件是用gzip来压缩的,所以在还原时,一定要有该选项才能进行解压缩;选项“x”表示从档案文件中释放文件;选项“v”表示详细报告tar处理的文件信息;选项“f”表示使用档案文件或设备,此选项通常为必选。
       # tar zxvf install_flash_player_10_linux.tar.gz
       libflashplayer.so
       只有一个“.so”文件,很明显,就是要将得到的这个文件移至火狐的插件目录下。可是,问题来了──火狐的插件目录在哪?一听到火狐浏览器,很容易想到mozilla。没错,找到这个就好办了。可是,要到哪去找呢?在Linux系统中,一些主要的应用程序一般都会保存在/usr目录下。
       3.查找火狐浏览器的插件目录
       [root@C DownLoad]# find /usr -name mozilla
       /usr/lib/mozilla
       /usr/share/mozilla
       有两个,是哪一个呢?还是先看下这两个文件夹里的内容。
        # ls /usr/lib/mozilla
       extensions  plugins
        # ls /usr/share/mozilla
       extensions
       很明显,plugins就是插件目录啦。
       4.把解压出来的“libflashplayer.so”文件剪切至/usr/lib/mozilla/plugins目录下
          # mv libflashplayer.so /usr/lib/mozilla/plugins/ 
          注意,若显示权限不够,则应在语句前加 sudo 
          到这里似乎就可以了,别急,先看下“libflashplayer.so”这个文件的权限。没办法,到了Linux的环境下,权限问题应该摆在第一位。
          # ls -l /usr/lib/mozilla/plugins/libflashplayer.so
       -rwxr-xr-x 1 1000 1000 10278616 07-18 11:10 /usr/lib/mozilla/plugins/libflashplayer.so
       表明这个文件的所有者、所属组都是1000。先不管有没有这个用户、这个组,我现在使用的是root用户、root组,当然要改过来。
          # chown root /usr/lib/mozilla/plugins/libflashplayer.so
          # chgrp root /usr/lib/mozilla/plugins/libflashplayer.so
       5)重新启动火狐浏览器(此后步骤因PC而异~~)
       问题依然存在,怎么回事?我在根目录下搜了一下“*flashplayer*”
           # find  -name "*flashplayer*"                         #这个地方显示为*和“号,是用英文来书写。
       /usr/lib/flash-plugin/flashplayer.xpt
       /usr/lib/flash-plugin/libflashplayer.so
       /usr/lib/mozilla/plugins/libflashplayer.so
       /root/.macromedia/Flash_Player/macromedia.com/support/flashplayer
       在/usr/lib/mozilla/plugins/目录下的“libflashplayer.so”文件是我从网站上下载并拷贝进去的,可是/usr /lib/flash-plugin目录下居然也有一个“libflashplayer.so”文件,而/usr/lib/flash-plugin目录本身很明显就是flash插件的一个目录,先看下里面的东西再说。
          # ls /usr/lib/flash-plugin/
       flashplayer.xpt  libflashplayer.so  setup
       homecleanup      LICENSE            show-license
       唯一闪光的也就是“flashplayer.xpt”这个文件了,没得选了,把这个文件也拷贝到火狐的插件目录下吧。
       [root@C DownLoad]# cp /usr/lib/flash-plugin/flashplayer.xpt /usr/lib/mozilla/plugins/
       还是不行?崩溃,崩溃!也许系统本身不支持最新版本的“libflashplayer.so”文件,那我就从/usr/lib/flash-plugin目录下把系统自带的拷过来,这总行了吧?
           # cp /usr/lib/flash-plugin/libflashplayer.so /usr/lib/mozilla/plugins/
       重启,终于没问题了。
       总结一下,其实最新的未必实用。先看下自己机子上有没有“libflashplayer.so”这个文件,有的话就直接拷贝到浏览器的插件目录下,就这么简单。
另外,注意 :在第3步,查找火狐浏览器的插件目录时,注意有plugins的目录,一定要把libflashplayer.so 文件添加到每一个含有plugins的目录下!!!
兴趣是成功之母,相信自己,走自己的路,加油!

你的企业需要二维码吗?扫描二维码就直接跳转到你的网站?是如何做到的


你的企业需要二维码吗?扫描二维码就直接跳转到你的网站?是如何做到的

发表于:2013年01月05日  19:070

   现在有个很新的功能,二维码?我说的"新"是针对我们城市而言,当然对于北京,上海等发达的城市,对这种东西已经在熟悉不过了。
    其实一维码大家都认识,都看过,去过超市的人都知道,营业员给你结帐的时候都拿个机器,把产品条形扫描一下,然后价格自动就显示在电脑上了,这就是一维码。
 
    那么二维码,到底是什么样的呢?知道的朋友不要拍砖,发个图片,让大家看看。



   如果大家手机里面有二维码扫描功能的,可以扫描一下这些图片看看,能实现什么样的效果,把结果写在下面的评论里面。
    相比一维码来讲,存储的内容更丰富,好比我们企业可以把视频信息,放在二维码里面,当扫描一下的时候,可以自动跳转到视频播放页面,播放企业宣传片,起到很好的传播和宣传的作用。
    下面把注册和制作的方法和大家分享一下。
    1.先去 http://www.2weima.com  注册个帐号.
    2.上图,请看。点击二维码生成 — 彩色二维码 


 点击链接,输入自己想制作的网站,例如


然后可以选择自己喜欢的图,鼠标移动到图案中间,出现点击生成,然后点鼠标左键。就可以生成了。


然后弹出来对话框,点击下载保存就可以了。以后把这个二维码发出去。印在名片上,或网站上。让朋友去扫描一下。看看是不是直接能进入你的网站。(有个问题。如果下载保存,下载不下来的话。可以在图片上按鼠标右键.然后点击图片另存为,就可以保存了)
    


简单我就分享到这,其实这个网站有很多功能,朋友们自己去测试吧。
本文由 大蓝海软文联盟  软文范例 独家发表,欢迎转载! 

0℃linux vagex挂机赚钱一键安装包 for debian


0℃

linux vagex挂机赚钱一键安装包 for debian

Yan's @ 12-08-07
前几天发了一个Vagex在Centos上的一键安装包,很多用Debian的系统装不上,今天看到了一个,顺便更新了下。
该一键包包含的有
  • Firefox
  • flash 插件
  • VNC
  • vagex 插件
只适用于 debian 系统,且建议为32位,OpenVZ 保守需要突发内存512M,Xen 仅需内存256M,默认每天自动重启一次。安装前先要注册个帐号【击这里注册
安装步骤
1、先进入 screen ,防止中途断线。
  1. screen 
2、下载 vagex_debian.sh
  1. wget http://vagex-debian.googlecode.com/svn/trunk/vagex_debian.sh
3、执行 vagex_debian.sh
  1. sh vagex_debian.sh 
4、中途需要输入 VNC 的密码
  1. ----------- 
  2. Plese input the VNC password below! 
  3. ----------- 
  4. You will require a password to access your desktops. 
  5. Password: 
  6. Verify: 
5、看到以下提示即完成安装
  1. Starting VNC server...DONE! 
  2. ----------- 
  3. Now you can VNC to complete the rest of the installation manually! 
  4. ----------- 
6、VNC 登陆,浏览器已经打开,进行必要的浏览器优化。
7、依次选择 File > Open File ,选择 vagex 安装文件,默认在 /tmp 下,确定安装,重启浏览器。
8、第一次重启后无法输入 vagex ID ,点击 cancel ,转向终端执行以下命令重启后 VNC 登陆,正常输入 vagex ID 。
  1. /etc/init.d/vncserverd restart 
9、按 ctrl + w 关掉小窗口,确认挂机正常后按 ctrl + q 正常退出浏览器,转向终端再次执行以下命令重启。
  1. /etc/init.d/vncserverd restart 
浏览器优化
View > Toolbars > 去勾 Bookmarks Toolbar
Edit > Preferences > General > When Namoroka starts: Show a blank page
View > Preferences > Privacy > Namoroka will: Never remember history
View > Preferences > Advanced > Update > 全部去勾
地址栏输入 about:config 回车并确认,在 Filter 输入 libflashplayer 搜索,双击结果使之 Value 为 false 。
再说明下,该一键包是在Debian下工作的,如果是Centos的话请看另一篇文章
Linux Vagex一键包 for centos-全自动挂Vagex赚美刀

Linux Vagex一键包 for centos 5.x(特别注意版本)-全自动挂Vagex赚美刀


    Vagex是一个刷Youtube视频浏览量的平台,类似于国内以前的淘宝刷信誉。Vagex与Youtube合作,在Youtube视频浏览量达到一定访问量,就会得到谷歌给予的广告分成。用户在Vagex平台提交Youtube的视频播放地址,我们挂机的软件或者浏览器插件会自动进行播放,我们获取的播放点数用来兑换美元,而需要刷浏览量的用户支付美元来购买点数,这是我们的资金获取来源。有空闲VPS的V友们,赶紧把这资源好好利用起来,也许还可以给你省下一大笔VPS费用.


最基本要求:
(1)需要注册一个Vagex帐号 ====【猛击这里】
(2)需要有一台空闲的美国VPS,Winows或者Linux均可
    Windows系统需要系统安装.NET 2.0和IE9,下载以后解压,执行,输入Vagex用户中心的ID(Your User Account ID: #XXXXX,只需要输入数字)即可。
      Linux VPS安装Vagex教程【Linux系统需要至少独享256M,突发512M的机器才可以,Firefox和Flash插件都要占用不少内存】。


1、下载一键包【CentOS 5系列版本】
32位系统:wget http://www.imnpc.me/AutoxfceCentOS32x.sh
64位系统:wget http://www.imnpc.me/AutoxfceCentOS64x.sh
2、安装脚本
32位系统执行:sh ./AutoxfceCentOS32x.sh
64位系统执行:sh ./AutoxfceCentOS64x.sh
3、安装过程请设置VNC密码【必须设置,当看到以下信息,请输入您要设置的VNC密码,需要输入2次】
password:
4、安装完毕后重启,下载安装VNCviewer管理
然后输入你VPS的IP:1进行连接,例如您的IP:184.82.88.88,就需要输入184.82.88.88:1,链接以后输入密码即可看到桌面
5、firefox设置
打开firefox,就是点桌面下方那个地球一样的图标,启动之后,再打开资源管理器就是地球左手边的那个图标。
然后拖动vagex(vagex_firefox_add_on-1.4.1-fx.xpi)插件到firefox界面,
就会自动安装插件了,安装完后重启一下火狐,
会弹出一个对话框要你输入你的ID,输入ID之后vagex就开始工作了!
接下来要对火狐做一个设置,就是不保存历史记录,其中原因我就不介绍了,但是这个一定要设置!
Edit——Preferences——Privacy
在firefox will后面的框里选Never remember history
这样火狐就设置好了,接着把firefox设置成开机启动
单击桌面下面最左边的那个X一样的图标选settings——Autostarted applications
6、增加计划任务(每6个小时自动重启,避免firefox长时间运行卡死)
  1. crontab -e 
按下字母 i 进入编辑模式,copy以下代码
  1. 00 00 * * * rm -rf /root/.vnc/*.log 
  2. 01 00 * * * reboot 
  3. 00 06 * * * rm -rf /root/.vnc/*.log 
  4. 01 06 * * * reboot 
  5. 00 12 * * * rm -rf /root/.vnc/*.log 
  6. 01 12 * * * reboot 
  7. 00 18 * * * rm -rf /root/.vnc/*.log 
  8. 01 18 * * * reboot 
然后按下esc,然后Shift+:,输入 wq ,就会保存退出.
在弹出的对话框中点击Add,在name中输入firefox,Description不用输入,Command中输入firefox
如此firefox的开机启动也设置好了!
接下来reboot一下看看是否能正常工作!

Android NFC 开发实例


作者:裘德超



使用硬件:Google Nexus S,北京大学学生卡。(ps:笔者本想使用公交一卡通进行测试,发现手机不能正确识别)
手机操作系统:Android ICS 4.04。
开发时,笔者从Google Play Store上下载了NFC TagInfo软件进行对比学习。所以我们可以使用任意一张能被TagInfo软件正确识别的卡做测试。
在Android NFC 应用中,Android手机通常是作为通信中的发起者,也就是作为各种NFC卡的读写器。Android对NFC的支持主要在 android.nfc 和android.nfc.tech 两个包中。
android.nfc 包中主要类如下:
NfcManager 可以用来管理Android设备中指出的所有NFCAdapter,但由于大部分Android设备只支持一个NFC Adapter,所以一般直接调用getDefaultAapater来获取手机中的Adapter。
NfcAdapter 相当于一个NFC适配器,类似于电脑装了网络适配器才能上网,手机装了NfcAdapter才能发起NFC通信。
NDEF: NFC Data Exchange Format,即NFC数据交换格式。
NdefMessage 和NdefRecord NDEF 为NFC forum 定义的数据格式。
Tag 代表一个被动式Tag对象,可以代表一个标签,卡片等。当Android设备检测到一个Tag时,会创建一个Tag对象,将其放在Intent对象,然后发送到相应的Activity。
android.nfc.tech 中则定义了可以对Tag进行的读写操作的类,这些类按照其使用的技术类型可以分成不同的类如:NfcA, NfcB, NfcF,以及MifareClassic 等。其中MifareClassic比较常见。
在本次实例中,笔者使用北京大学学生卡进行数据读取测试,学生卡的TAG类型为MifareClassic。

AndroidManifest.xml:

  1. <span style="font-size: 16px;"><?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="org.reno"
  4. android:versionCode="1"
  5. android:versionName="1.0" >
  6. <uses-permission android:name="android.permission.NFC" />
  7. <uses-sdk android:minSdkVersion="14" />
  8. <uses-feature android:name="android.hardware.nfc" android:required="true" />
  9. <application
  10. android:icon="@drawable/ic_launcher"
  11. android:label="@string/app_name" >
  12. <activity
  13. android:name="org.reno.Beam"
  14. android:label="@string/app_name"
  15. android:launchMode="singleTop" >
  16. <intent-filter>
  17. <action android:name="android.intent.action.MAIN" />
  18. <category android:name="android.intent.category.LAUNCHER" />
  19. </intent-filter>
  20. <intent-filter>
  21. <action android:name="android.nfc.action.TECH_DISCOVERED" />
  22. </intent-filter>
  23. <meta-data
  24. android:name="android.nfc.action.TECH_DISCOVERED"
  25. android:resource="@xml/nfc_tech_filter" />
  26. </activity>
  27. </application>
  28. </manifest>
  29. </span>


res/xml/nfc_tech_filter.xml:


<resourcesxmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<tech-list>
<tech>android.nfc.tech.MifareClassic</tech>
</tech-list>
</resources>

<uses-permissionandroid:name="android.permission.NFC"/>
<uses-featureandroid:name="android.hardware.nfc"android:required="true"/>


表示会使用到硬件的NFC功能。并且当用户在Google Play Store中搜索时,只有带有NFC功能的手机才能够搜索到本应用。

当手机开启了NFC,并且检测到一个TAG后,TAG分发系统会自动创建一个封装了NFC TAG信息的intent。如果多于一个应用程序能够处理这个intent的话,那么手机就会弹出一个框,让用户选择处理该TAG的Activity。TAG分发系统定义了3中intent。按优先级从高到低排列为:
NDEF_DISCOVERED, TECH_DISCOVERED, TAG_DISCOVERED
当Android设备检测到有NFC Tag靠近时,会根据Action申明的顺序给对应的Activity 发送含NFC消息的 Intent。
此处我们使用的intent-filter的Action类型为TECH_DISCOVERED从而可以处理所有类型为ACTION_TECH_DISCOVERED并且使用的技术为nfc_tech_filter.xml文件中定义的类型的TAG。

详情可查看http://developer.android.com/guide/topics/nfc/nfc.html说明。下图为当手机检测到一个TAG时,启用Activity的匹配过程。




res/layout/main.xml


  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:orientation="vertical" >
  6. <ScrollView
  7. android:id="@+id/scrollView"
  8. android:layout_width="fill_parent"
  9. android:layout_height="fill_parent"
  10. android:background="@android:drawable/edit_text" >
  11. <TextView
  12. android:id="@+id/promt"
  13. android:layout_width="fill_parent"
  14. android:layout_height="wrap_content"
  15. android:scrollbars="vertical"
  16. android:singleLine="false"
  17. android:text="@string/info" />
  18. </ScrollView>
  19. </LinearLayout>


定义了Activity的布局:只有一个带有滚动条的TextView用于显示从TAG中读取的信息。
res/values/strings.xml


  1. <?xml version="1.0" encoding="utf-8"?>
  2. <resources>
  3. <string name="app_name">NFC测试</string>
  4. <string name="info">扫描中。。。</string>
  5. </resources>


src/org/reno/Beam.java
  1. package org.reno;
  2. import android.app.Activity;
  3. import android.content.Intent;
  4. import android.nfc.NfcAdapter;
  5. import android.nfc.Tag;
  6. import android.nfc.tech.MifareClassic;
  7. import android.os.Bundle;
  8. import android.widget.TextView;
  9. public class Beam extends Activity {
  10. NfcAdapter nfcAdapter;
  11. TextView promt;
  12. @Override
  13. public void onCreate(Bundle savedInstanceState) {
  14. super.onCreate(savedInstanceState);
  15. setContentView(R.layout.main);
  16. promt = (TextView) findViewById(R.id.promt);
  17. // 获取默认的NFC控制器
  18. nfcAdapter = NfcAdapter.getDefaultAdapter(this);
  19. if (nfcAdapter == null) {
  20. promt.setText("设备不支持NFC!");
  21. finish();
  22. return;
  23. }
  24. if (!nfcAdapter.isEnabled()) {
  25. promt.setText("请在系统设置中先启用NFC功能!");
  26. finish();
  27. return;
  28. }
  29. }
  30. @Override
  31. protected void onResume() {
  32. super.onResume();
  33. //得到是否检测到ACTION_TECH_DISCOVERED触发
  34. if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(getIntent().getAction())) {
  35. //处理该intent
  36. processIntent(getIntent());
  37. }
  38. }
  39. //字符序列转换为16进制字符串
  40. private String bytesToHexString(byte[] src) {
  41. StringBuilder stringBuilder = new StringBuilder("0x");
  42. if (src == null || src.length <= 0) {
  43. return null;
  44. }
  45. char[] buffer = new char[2];
  46. for (int i = 0; i < src.length; i++) {
  47. buffer[0] = Character.forDigit((src[i] >>> 4) & 0x0F, 16);
  48. buffer[1] = Character.forDigit(src[i] & 0x0F, 16);
  49. System.out.println(buffer);
  50. stringBuilder.append(buffer);
  51. }
  52. return stringBuilder.toString();
  53. }
  54. /**
  55. * Parses the NDEF Message from the intent and prints to the TextView
  56. */
  57. private void processIntent(Intent intent) {
  58. //取出封装在intent中的TAG
  59. Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
  60. for (String tech : tagFromIntent.getTechList()) {
  61. System.out.println(tech);
  62. }
  63. boolean auth = false;
  64. //读取TAG
  65. MifareClassic mfc = MifareClassic.get(tagFromIntent);
  66. try {
  67. String metaInfo = "";
  68. //Enable I/O operations to the tag from this TagTechnology object.
  69. mfc.connect();
  70. int type = mfc.getType();//获取TAG的类型
  71. int sectorCount = mfc.getSectorCount();//获取TAG中包含的扇区数
  72. String typeS = "";
  73. switch (type) {
  74. case MifareClassic.TYPE_CLASSIC:
  75. typeS = "TYPE_CLASSIC";
  76. break;
  77. case MifareClassic.TYPE_PLUS:
  78. typeS = "TYPE_PLUS";
  79. break;
  80. case MifareClassic.TYPE_PRO:
  81. typeS = "TYPE_PRO";
  82. break;
  83. case MifareClassic.TYPE_UNKNOWN:
  84. typeS = "TYPE_UNKNOWN";
  85. break;
  86. }
  87. metaInfo += "卡片类型:" + typeS + "\n共" + sectorCount + "个扇区\n共"
  88. + mfc.getBlockCount() + "个块\n存储空间: " + mfc.getSize() + "B\n";
  89. for (int j = 0; j < sectorCount; j++) {
  90. //Authenticate a sector with key A.
  91. auth = mfc.authenticateSectorWithKeyA(j,
  92. MifareClassic.KEY_DEFAULT);
  93. int bCount;
  94. int bIndex;
  95. if (auth) {
  96. metaInfo += "Sector " + j + ":验证成功\n";
  97. // 读取扇区中的块
  98. bCount = mfc.getBlockCountInSector(j);
  99. bIndex = mfc.sectorToBlock(j);
  100. for (int i = 0; i < bCount; i++) {
  101. byte[] data = mfc.readBlock(bIndex);
  102. metaInfo += "Block " + bIndex + " : "
  103. + bytesToHexString(data) + "\n";
  104. bIndex++;
  105. }
  106. } else {
  107. metaInfo += "Sector " + j + ":验证失败\n";
  108. }
  109. }
  110. promt.setText(metaInfo);
  111. } catch (Exception e) {
  112. e.printStackTrace();
  113. }
  114. }
  115. }



关于MifareClassic卡的背景介绍:数据分为16个区(Sector) ,每个区有4个块(Block) ,每个块可以存放16字节的数据。
每个区最后一个块称为Trailer ,主要用来存放读写该区Block数据的Key ,可以有A,B两个Key,每个Key 长度为6个字节,缺省的Key值一般为全FF或是0. 由 MifareClassic.KEY_DEFAULT 定义。
因此读写Mifare Tag 首先需要有正确的Key值(起到保护的作用),如果鉴权成功
然后才可以读写该区数据。
执行效果:








参考联接:
http://developer.android.com/guide/topics/nfc/nfc.html
http://developer.android.com/reference/android/nfc/tech/MifareClassic.html
http://www.imobilebbs.com/wordpress/?p=2822