發表文章

目前顯示的是 2016的文章

Apple 企業版開發者帳號Apple In House(Apple Developer Enterprise Program License) 申請心得

圖片
最近因為工作需要申請了 Apple In House(Apple Developer Enterprise Program License) 的帳號,過程瑣碎繁雜。特此紀錄。 基本流程: A. 從這個網址開始 :  (Apple Enterprise enroll URL) https://developer.apple.com/programs/enterprise/enroll/ 中國請使用 https://developer.apple.com/programs/enterprise/cn/ 1. 企業帳號(In House)目的是應用程序APP只是給內部員工分享開發使用的,才可以註冊這個年費 US$299/year 。 如果給外面的人用的要申請正常平時的 apple developer US$99/year (APP須經過審查上架 Apple Store ). 2. 先得有個法律上合法的公司,且有公司登記的資訊可以查的到的。且還要 有個公司網站 ,及 公司網域結尾的 email address  申請 apple ID 並用來申請 in house 帳號。 3. 公司的負責人要同意,並且能約束員工使用這個帳號。 4. 用上面這個公司資訊,去申請 鄧白式編碼(DUNS) ,這個碼主要用在商務資訊的驗證。 可以直接上 apple 網站申請,不會收取任何的費用,但是 apple in house 帳號要付費。 申請過後 1~2 天內 ,會收到台灣鄧白式公司的驗證電話,主要是驗證你的公司資訊。 Apple Developer Enterprise Program 註冊你的組織 B. 申請 DUNS Apple的 DUNS 資訊申請網址:   https://developer.apple.com/support/ios/D-U-N-S.html  申請後,幾天內會有 當地鄧白式公司的人員電話聯繫確認你公司 ,通過以後會收到類似這樣的信件 寄件者: dsmmssqladmin@dnb.com 寄件日期: 2016年(馬賽克) 收件者: (馬賽克) 主旨: D-U-N-S Number Request/Update Completed your D-U-N-...

STOMP/MQTT 通訊協定的測試心得(client/server)

圖片
STOMP 通訊協定的測試心得(client/server) STOMP 是啥東西?  STOMP 是 Simple (or Streaming) Text Oriented Message Protocol 的縮寫 主要提供一個可以操作的通訊界面,可以支援不同平台的的客戶端交換文字訊息。它屬於一個訊息導向的中介軟體。這個服務類似 HTTP ,並且架構於 TCP 上面。 ref: https://segmentfault.com/a/1190000004906137 功能示意圖 用來搭建 IM (即時通訊服務) 是很簡單好用的中介工具 https://segmentfault.com/a/1190000004906137  這裡有目前常見的訊息中介軟體的比較介紹 amqp mqtt or stomp http://blogs.vmware.com/vfabric/2013/02/choosing-your-messaging-protocol-amqp-mqtt-or-stomp.html 建議和 html5 websocket 一起看,比較容易理解它到底再做啥? P66 頁開始。 http://www.slideshare.net/peterlubbers/html5-real-time-and-websocket/94-Learn_More_HTML5_User_Groups 這裡有 function 功能規格說明 https://mq.java.net/4.4-content/stomp-funcspec.html 這個大概就是目前的官方網站了 https://github.com/stomp-php/stomp-php/wiki 這個服務主要構過 broker 來提供服務,目前 broker 的軟體有很多種可以提供。 broker -- STOMP Servers broker -- STOMP Servers 的列表,常用的。 https://stomp.github.io/implementations.html 我裡以 apache apollo 這套 activemq 的子專案,來做說明。 Apollo 1.7.1 版本,下載我是以 Linux 版來說明 http:...

Enom DNS 服務的動態 dns 更新

圖片
Enom DNS 服務的動態 dns 更新 圖跟內文無關 最近因為工作關係,租了一台韓國的 aws 主機來當 vpn 服務,想說 ip 也不想固定,弄個動態 ip 更新好了。我的 dns 主機商是 enom 他在網路上有很多的自動更新的 script。 先提供一個有趣的網站,這網站可以用命令列反查所在的對外 public ip 很適合用來寫程式。 https://ifconfig.co/ 命令列及 API 版本的 myip address 另外有一個網站 https://www.ipip.net/ 可以查詢每個 ip 的所在地,是一個很好用的服務。 另外也提供 api 接入的功能,可以很方便的接程式。 官方網站提供的程式,右方有各種平台用的。 http://www.enom.com/help/faq_dynamicdns.asp  下面是在 github 找到的,其實重點在 enom api server 提供的服務,每個程式只是包裝了一些個人化的需求。 Enom api server ENOMURL="http://dynamic.name-services.com" python version: https://gist.github.com/stef-levesque/11229362 shell version: https://gist.github.com/h0tw1r3/11405624 php version: https://github.com/mrubinsk/phpEnomUpdate/blob/master/phpEnomUpdate.php php 最簡單版本的 update. https://gist.github.com/agarzon/2431219 // -------------------------------------------- # php 版本的更新程式 [root@ip-172-31-12-22 enom]# cat /root/enom/ip-update.php #!/usr/bin/php /* Run this script every 5 minutes (or 1 hour, is up to...

PHP session_write_close()

圖片
PHP函式 php session_write_close() End the current session and store session data. session 的資料需要在 script 結束時才會儲存,所以當有2 個 script 同時執行時,後面的 script 會等前面的 script 執行完成再來跑,如果設定了  session_write_close() 就可以立即告訴程式,我後面的程序不會寫入 session 了,其他程式可以讀取 session 的內容來處理。 好處就是:程序不會被前一個 session 卡住,但是寫入 session 的行為就要很小心的處理。 範例: http://konrness.com/php5/how-to-prevent-blocking-php-requests/ 說明:  http://php.net/manual/en/function.session-write-close.php Session data is usually stored after your script terminated without the need to call session_write_close(), but as session data is locked to prevent concurrent writes only one script may operate on a session at any time. When using framesets together with sessions you will experience the frames loading one by one due to this locking. You can reduce the time needed to load all the frames by ending the session as soon as all changes to session variables are done. ref: http://xyz.cinc.biz/2012/01/php-session-lock.html 

RabbitMQ 實作 AMQP 的開放原始碼訊息代理軟體

圖片
RabbitMQ 是一個訊息中介軟體 (broker) 可以接受並轉發訊息,他是 AMQP 的實作。 功能類似郵局機制,類似 unix Email system。 主要處理的存儲、轉發 binary blobs of data (二進制資料) 那 AMQP 它和傳統的 SMTP 差異在哪裡??  重點在可以 非同步,並且可靠 。 ref:  http://blogs.mulesoft.com/dev/news-dev/amqp-and-the-future-of-web-messaging/   系統中的角色: 訊息發布者 publisher = 訊息消費者 consumer 訊息代理 brokers 訊息生產者 producers 訊息交換模型 (ref:  http://rabbitmq.mr-ping.com/AMQP/AMQP_0-9-1_Model_Explained.html ) 使用 RabbitMQ 的顧客  https://blog.pivotal.io/channels/data-science-pivotal Pivotal Labs 原來不只玩 big data 它是一間很有趣的公司呀!!( MADlib 是它開發中的產品..) 因為還不是很熟悉,所以放了很多參考連結: 官方網站 http://www.rabbitmq.com    in github  https://github.com/rabbitmq 官方教學  http://www.rabbitmq.com/getstarted.html  中文教學  http://rabbitmq.mr-ping.com/ WIKI 介紹 https://zh.wikipedia.org/wiki/RabbitMQ PHP 函式 http://php.net/manual/fa/book.amqp.php  PHP amqplib in GITHUB  https://github.com/php-amqplib/php-amqplib  Python 函式 https:/...

直接把 html table 轉成可以 search , sort , 翻頁的表格

一個很好用的 Jquery 套件,可以直接把 html table 轉成可以 search , sort , 翻頁的表格, 不用自己寫太多的前端網頁工作。 DataTable   https://www.datatables.net  Example: https://www.datatables.net/examples/basic_init/zero_configuration.html 刪減多餘 code 後的簡單範例: https://mtchang.github.io/test/datatables_example.html

CentOS7 Linux 安裝給 pokemon bot 使用的 proxy server

圖片
CentOS7 Linux 安裝給 pokemon 使用的 proxy server  Porxy 服務早期是因為網路頻寬小,通常在區網內把重複的流量用 proxy 來取代。 現在則變成一種可以欺騙 web server 客戶端來源 IP 的一個小技巧,有人用於當 bot 爬網站,有人用於分散流量抓迷片。而今天,我把它用來服務 pokemon bot client ,因為一個 bot 抓太慢拉!!! XDXD * 安裝及設定 Linux 的 Proxy 服務 # 安裝 squid yum install squid -y # 編輯設定檔 /etc/squid/squid.conf nano /etc/squid/squid.conf # 在這段之後 # # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS # # 放入下面三行規格, ip 請自行更動 acl mynet src 111.32.141.0/24 acl mynet src 111.32.141.0/24 http_access allow mynet # 啟動 systemctl restart squid  # 開機預設啟動 systemctl enable squid  # 確定 port 3128 是否工作 netstat -antlp | grep squid tcp6       0      0 :::3128        :::*         LISTEN      29062/(squid-1)   * 設定 pokemon bot , 這裡是以 Ar1i 開發的 PokemonGo-Bot 來當範例。 https://github.com/Ar1i/PokemonGo-Bot/tree/master/Builds-Only  Ar1i 幾乎每天都在發新的版本,也修正很多 bug ,目前用過感覺最好的 bot 。 ...

PostgreSQL 使用的 timestamp 變更 timezone 很簡單

圖片
PostgreSQL 使用的 timestamp 變更顯示的 timezone 很簡單 只要把 select 欄位後方加上  AT TIME ZONE ' EST '  就可以 這裡的  'EST' 指的是美東時間,縮寫可以參考官方說明。 https://www.postgresql.org/docs/8.1/static/datetime-keywords.html  範例SQL: SELECT id, transaction_time,to_char((transaction_time AT TIME ZONE 'CCT')  , 'YYYY-MM-DD  HH24:MI:SS' )  as cct_transaction_time,  to_char((transaction_time AT TIME ZONE 'EST')  , 'YYYY-MM-DD  HH24:MI:SS' )  as est_transaction_time   FROM root_memberdepositpassbook WHERE member_id = '45'  ORDER BY est_transaction_time DESC LIMIT 10; https://www.postgresql.org/docs/9.5/static/functions-formatting.html  關於欄位的輸出格式官方網站也有說明,可以讓你以你想的方式輸出。直接再 SQL 敘述指定就可以。 -- 北京時間 SELECT enrollmentdate, to_char((enrollmentdate AT TIME ZONE 'posix/Etc/GMT-8'),'YYYY-MM-DD HH24:MI:SS') as enrollmentdate_tz FROM root_member WHERE id = '45'; -- 美東時間 SELECT enrollmentdate, to_char((enrollmentdate AT TIME ZONE '...

Pokemon GO 有很完整的社群開發論壇及完整的 API code

圖片
pokemon go 有很完整的社群開發論壇及完整的 API code,真是令人驚豔.. https://www.reddit.com/r/pokemongodev/ 不論原生公司喜不喜歡,在 github 上面一堆延伸開發的專案,且目前更新都很頻繁,大概三天就出一個版本了... 一開始是想要參考別人 API 怎麼寫的!!! 沒想到先看到 pokemon api , 各種版本都有, 少說有 6 種以上語言支持。 PoMG API by python 2.7 https://github.com/PokeAPI/pokeapi https://pokeapi.co/docsv2/ 然後就研究了一些 bot 在作啥麼....XDXD https://www.youtube.com/watch?v=MoYjVTbLWyo ------- pokemon go 預測雷達 , 很準. 有神獸出現時只要看 Found By Trainer: (Poke Radar Prediction) 才抓,其餘都是玩家來亂的。 https://www.pokemonradargo.com/ 上面這個可能樹大招風,所以有時後會關閉服務或不正常。可以使用。 https://pkget.com/  大家找寶貝 ------- PokeMon GO 進化計算機 , 及 pokemon 介紹. 哪些是神獸也可以參考這裡。 https://pokemon.gameinfo.io/tools/evolution-calculator?hl=zh_TW ------- pokemon go 官方的 PTC 帳號註冊(Pokemon Trainer Club) https://club.pokemon.com/us/pokemon-trainer-club/sign-up/ 可以註冊一個免洗帳號,避免 google account 外流的風險。 因為他的 google  登入需要填入你的 gmaill 帳密,這很有外流的風險。 ------- 很紅的 bot NecroBot , C# console for win ------- 最初的的 NecroBot 版本, 被自殺了。 https://github...

pgadmin install in Linux Mint 17.3 ROSA

圖片
pgadmin install in Linux Mint 17.3 ROSA bash <(cat /etc/os-release; echo 'echo ${VERSION/*, /}') | head -n1 | awk '{print "deb http://apt.postgresql.org/pub/repos/apt/",tolower($1)"-pgdg main";}' > /etc/apt/sources.list.d/pgdg.list wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - sudo apt-get update sudo apt-get install pgadmin3 三行就搞定了,去選單找找看 pgadmin 就升級為 1.21 了。 REF: http://technobytz.com/how-to-install-postgresql-9-4-in-ubuntu-linux-mint.html

How disable the touchpad in Linux MINT (暫時關掉觸控板的功能)

圖片
用了 NB 最麻煩的就是手滑,不小心摸到觸控板。 找了一下,暫時關閉的方式。 使用 root 權限 , 執行 xinput lst 觀看目前系統上的輸入裝置 id 值 BarkleyMT ~ # xinput list ⎡ Virtual core pointer                     id=2 [master pointer  (3)] ⎜   ↳ Virtual core XTEST pointer               id=4 [slave  pointer  (2)] ⎜   ↳ PixArt USB Optical Mouse                 id=11 [slave  pointer  (2)] ⎜   ↳ ETPS/2 Elantech Touchpad                 id=14 [slave  pointer  (2)] ⎣ Virtual core keyboard                   id=3 [master keyboard (2)]     ↳ Virtual core XTEST keyboard             id=5 [slave  keyboard (3)]     ↳ Power Button                           ...

Linux ubuntu 的 soft raid 1 及 LVM 磁區的資料救援

圖片
圖不相關於此文 這幾天停電,發生剛好有一台老 server power 卦掉了。 想說就順便把資料轉移到新的機器上面, 他在還沒死掉前使用的是 ubuntu linux 系統 硬碟使用 soft raid 1 的架構。 硬碟我使用 usb 硬碟外接座,把裝置接到系統上面。可以使用 blkid 看看裝置代號。 epost mnt # blkid  /dev/sda1: UUID="96d81952-2c1b-4963-98e7-b203f0197686" TYPE="ext4"  /dev/sda5: UUID="8987b099-e672-4486-ae9c-7ccb12264b7f" TYPE="swap"  /dev/sdb1: UUID="08cd466a-fdd1-43ea-9f4d-97d12fbed8ae" TYPE="ext4"  /dev/sde1: UUID="6f575859-37a1-ff61-530b-09d8a1b789b6" UUID_SUB="c601821d-4bf7-0728-83ae-682c29864775" LABEL="bm:0" TYPE="linux_raid_member"  * 可以看到 type 為 linux_raid_member 的 type 型態,可以使用 mdadm 指令,把這裝置賦予到一個 raid 裝置。 mdadm --assemble --run /dev/md3 /dev/sde1 * 然後再用 mount 將它掛載到目錄就可以存取。 * 但是發現檔案系統竟然是 LVM2_member 的檔案架構, 所以需要用 LVM 的方式操作它。 epost mnt # mount /dev/md3 /mnt/sde mount: unknown filesystem type 'LVM2_member' * 看看這個系統的分割區, 是不是有其他裝置。結果竟然全部都沒有合法的分割表。 epost mnt # fdisk /dev/md3 ...

PostgreSQL的數值資料型態(Numeric Data Types)

圖片
PostgreSQL的數值資料型態(Numeric Data Types) 今天仔細看數值資料型態時,才仔細看到 postgresql 的數值型態其中一種為 numeric 的型態,中文翻譯為「任意精度數值」,一直間無法理解他的意思,後來才發現它可以讓用戶自行定義十進位的位數及小數點後面的位數。難怪科學運算都喜歡用 postgresql DB 來操作,一般生活中的應用實在太少運用到麼大的需求。 在最新的 9.5 版它的範圍描述是這樣寫的 up to 131072 digits before the decimal point; up to 16383 digits after the decimal point 如果我解讀沒錯的話,在小數點前可以 131072 位數,在小數點後為 16383 位數。大概以後只有十兆換一塊的通膨才有可能有機會用到了(誤)。 例如: 數字 23.5141 的 精度(precision)為 6 而比例(scale)為 4 宣告格式為: NUMERIC(precision, scale) NUMERIC(6, 4) 在 pgadmin 工具中的設定範例如下: 程式語言上運算的問題: 但其實宣告了這個欄位型態後,匯衍生出另一個問題。就是 DB 可以操作這個數字運算操作,但是程式語言有困難呀!!!找了一下,好像 PHP 的 BCMATH 好像可以解決任意精確度運算的這個問題,下次有遇到再來研究巴。 http://php.net/manual/zh/ref.bc.php # 9.5 版的 DATA TYPE 描述 https://www.postgresql.org/docs/9.5/static/datatype-numeric.html # 中文 8.0 版的 DATA TYPE http://twpug.net/docs/postgresql-doc-8.0-zh_TW/datatype.html#DATATYPE-NUMERIC-DECIMAL

Linux command 測試網路速度

Linux command 測試網路速度 原始碼 in https://github.com/sivel/speedtest-cli # 安裝及執行 wget -O speedtest-cli https://raw.github.com/sivel/speedtest-cli/master/speedtest_cli.py chmod +x speedtest-cli ./speedtest-cli # 執行範例 [root@dev dl]# ./speedtest-cli Retrieving speedtest.net configuration... Retrieving speedtest.net server list... Testing from TANet (111.111.11.111)... Selecting best server based on latency... Hosted by Chief Telecom (Changhua) [67.67 km]: 19.85 ms Testing download speed........................................ Download: 798.55 Mbit/s Testing upload speed.................................................. Upload: 185.07 Mbit/s

將 github 的 code 分享到 blog 使用

圖片
(1) 首先要有個 github 的帳號  (2) 登入 https://gist.github.com/  (3) 貼上程式碼, 選取左上角的 Embed code (4) 然後就長的像是下面一樣

Redis-Server with PHP 的使用 in CentOS7

圖片
Redis-Server with PHP 的使用 in CentOS7 * Redis DB server 的用途 Redis 是一個 key-value 架構的 database , 且因為它工作在記憶體上面,所以速度非常的快。 可以用來當 DB cache 加速的功能或是需要快速反應的 DB * CentOS 7 的 Redis-server 安裝方式 # yum install redis -y  * 安裝參考 http://sharadchhetri.com/2014/10/04/install-redis-server-centos-7-rhel-7/ * 通常會搭配 php 等 client 端工具一起安裝, 這裡我是以 php56w 的版本安裝, 因為有比較多 lib 支援 # yum install php56w-pecl-redis * php56w 可以參考 webtatic 釋出的 yum repo 安裝參考 https://webtatic.com/packages/php56/ RHEL7 OR EPEL7  官方網站跑的版本有點慢,可以先參考這個版本。 * 啟動 # systemctl start redis.service * 預設開機啟動 # systemctl enable redis.service * 看狀態 # systemctl status redis.service * 測試 , 剛裝好的 redis-server 是沒有密碼的, 且只能 127.0.0.1 執行。 可以用 redis-cli client 端工具測試 PONG 是正確的回應。 [root@c7 ~]# redis-cli ping PONG * 所以我都會設定個密碼, 並且把 bind 打開讓所有人都可以連上來。 * 請找到下面兩行, 修改為你要的密碼及主機 ip # vim /etc/redis.conf bind 111.111.22.22 requirepass 123456 * 重新啟動 # systemctl restart redis.service * 驗證看看 port , 應該是 6379 # netstat -antlp | grep ...

53 分鐘

今天看到一個數字, 53 分鐘. 就想到 Amazon Route 53 (http://aws.amazon.com/tw/route53/) 小小的算了一下 一年的時間 60*24*365.25=525,960 分鐘 可用性指標 = (1-故障時間/整年分鐘)*100% 99.99=(1- X/525960)*100% X = 53分鐘 所以  Route53 應該是Amazon很委婉的表達他是 99.99% 的網站可用性... 好巴,算你有囂張的本錢。

建立一個 postgresql 帳號 with MADLIB 的範例:

圖片
以 http://ooxx.db.com.tw/phpPgAdmin/  phpPgAdmin 當範例  建立一個 postgresql 帳號 with MADLIB 的範例 (1) 因為系統內已經有個 hadoop 帳號建立 MADLIB 的函數 以這個當範本就可以. 否則重新匯入需要 super user 帳號會很不方便。 如果需要重新建立,請參考   http://blog.jangmt.com/2016/04/madlib-postgresql-94-in-linux.html 文章設定。 (2) 建立的 SQL 範例 , 需要一行一行填入. 預設不允許多行一起進入 sql -- 建立使用者 CREATE USER 帳號 WITH PASSWORD '密碼'; -- 建立資料庫 CREATE DATABASE 帳號(同DB) WITH OWNER 帳號 ENCODING 'UTF8' TEMPLATE hadoop; -- 註解 DB , 方便找人 COMMENT ON DATABASE 帳號 IS '使用者資訊註解'; -- 授權 GRANT ALL PRIVILEGES ON DATABASE 帳號 to 帳號(同DB); (3) sql 範例如下: CREATE USER b004021234 WITH PASSWORD '1234atl1234'; CREATE DATABASE b004021234 WITH OWNER b004021234 ENCODING 'UTF8' TEMPLATE hadoop; COMMENT ON DATABASE b004021234 IS '蔡ooxx 0926123456'; GRANT ALL PRIVILEGES ON DATABASE b004021234 to b004021234; (4) 如果要一次建立很多人,那就以此範本寫成批次處理就可以。 REF: http://blog.jangmt.com/2016/04/madlib-postgresql-94-in-linux.html  http://madlib.incubator.ap...

更換家用抽水馬達紀錄

圖片
更換家用抽水馬達紀錄(以加壓馬達替代) ,身為一個專業的 IT 人員,更換一下設備也是很正常的。 昨晚 洗澡到一半,突然發現水量變小了 。感覺好像有點不妙,上樓檢查了一下。發現 三年前安裝的那台 AQ200 馬達 的電子LED沒有亮燈,但是電力 110V 有進入馬達。猜想說該不會電路板燒了巴!!!  因為水龍頭還有水只是水量沒有加壓,且已經很晚了就先這樣隔天早上在處理。 到了更晚的時候發現不是水量變小,是整個沒水了 。一時間無法找到原因,只能上網找找看答案。 根據官方網站的判斷,我先懷疑機器故障,隔天早上直接就去買台新的大井  HQ200  ($3000)1/4HP準備更換機器,但要換的時候才發現竟然是水塔沒水,檢查液位開關發現都沒有反應,手動開關還是無法出水。 開始懷疑是樓下抽水馬達的問題,馬上再去換了台 大井 HQ400 ($3500)1/2HP的機器。原本這台 木川KQ400 前幾天聽他的馬達生,就感覺怪怪的要轉不轉的。 抽水馬達 木川KQ400 ,左方開關為連接到水塔的液位開關。 先確認電力有進入,但馬達不能動作。google查了很多人的狀況,都說 可能是壓力感應開關有問題 ,所以我先依據網路上的教學, 拔除開關 Q 這條線,以一字起直接將兩個 pin 測試短路,但還是無法啟動 ,所以就懷疑應該是馬達真的掛了,用了快 10 年掛掉應該也合理啦。 測試是否為KQ400 的壓力感應開關故障 新品 大井 HQ400 很重要:更換前,請先把抽水馬達的電源開關,從開關箱處關閉。 直接拆掉舊有的 KQ400 ,管口、固定位位置幾乎都一樣。 現在的電壓選擇變得更方便了,直接一個開關就決定 110V or 220V 了。 再把110V電力接上去就可以,安裝前記得先打開自來水公司的來源水閘,上方水管是往水塔打水。左方開關是接到頂樓水塔的液位開關,頂樓液位開關滿水位關閉,馬達沒電也就不會啟動了。 注水塞 後記: 1. 下方水管閘閥為自來水公司的水,直接打開就有水了更換前記得要關閉。 2. 送電前先把機器上面的 注水塞打開,注滿水 。也可以打開下方水管閘閥注水,這樣比較快。 3. 送電後,試著旋開 1/4 注水塞,看有沒有水噴出來,有噴出來表示抽...

Postgresql 上面的「尿布、啤酒、星期五」,不用寫程式下行 SQL 就搞定

圖片
MADlib + postgresql 9.4 in Linux CentOS 7 MADlib®: Big Data Machine Learning in SQL for Data Scientists 啤酒、尿布、星期五 MADlib 在 postgresql 上面以是以 postgres 函式的型態來實現對於數據資料的操作 ,你可以透過這個以 plpython 語言寫的函式,直接操作原始數據轉存到新的資料庫當中,這個函式庫支援很多機器學習的演算法,可以很方便的分析數據. 目前提供的有底下這些,看起來應該有陸續發展的可能,因為已經被放到 Apache 基金會的子項目計畫內了...XDXD 功能: Classification 分類 Regression 回歸 Clustering 集群 Topic Modeling 主題模型 Association Rule Mining 關聯性規則 Descriptive Statistics 描述性統計 Validation 驗證 more... http://madlib.net/product/ 官方網站 http://madlib.net/ 我使用來安裝的版本是 CentOS Linux 7 ,但是安裝這個 LIB 前請先選擇一套支援的資料庫系統,這裡我用的是 Postgresql 9.4 的版本,安裝請參考這一篇: http://blog.jangmt.com/2016/03/postgresql-94-in-centos-linux-7.html 下載 http://madlib.net/download/ 安裝 [root@c7 ~]#    yum install madlib-1.8-Linux.rpm  -y 檢查是否裝了,安裝好後他的路徑放在 /usr/local/madlib/ [root@c7 ~]# rpm -qa | grep madlib madlib-1.8-1.x86_64 我使用 Single Node 的模式,系統需求:( HAWQ >= 1.2, Greenplum >= 4.2 or PostgreSQL >= 9.2 ) 在安裝後,這特 MADlib ...

將 CSV 檔案加上 UTF BOM 讓它可以在 Windows 被 EXCEL 正確的開啟沒有亂碼的問題

圖片
將 CSV 檔案加上 UTF BOM 讓它可以在 Windows 被 EXCEL 正確的開啟沒有亂碼的問題 在 UTF-8 文件中放置 BOM 主要是微軟系統的習慣。但是真的沒有必要帶拉!!!! http://stackoverflow.com/questions/2223882/whats-different-between-utf-8-and-utf-8-without-bom According to the Unicode standard, the BOM for UTF-8 files is not recommended: 圖片和內文不太相關 下面提供一種在 windows 上面,政治正確的解法。 XDXD // ======================================================== // 產生現在的秒數 $time_string = date("YmdHis"); // 寫入 utf8 with BOM function writeUTF8File($filename,$content) {     $f = fopen($filename, 'w');     fwrite($f, pack("CCC", 0xef,0xbb,0xbf));     fwrite($f,$content);     fclose($f); } $f = 'uploads/private/'.$time_string.'.csv'; $fdir = 'uploads/private/'; // 檔案不存在就先建立檔案 if (!file_exists($fdir)) {     mkdir($fdir); } writeUTF8File($f,$csv); echo 'CSV 輸出完成,請點選 連結 下載。 '; // ========================================================