分类目录归档:programming

你不知道的六大Apache大數據項目新星

世界各地無數的組織,他們使用的數據現在日益龐大而複雜,使用傳統的數據處理程序已無法再進行優化分析及獲得洞察。而這正是的新一代的大數據應用程序要解決的問題。近期Apache軟件基金會(ASF)又將一批有趣的開源大數據項目畢業為的Apache頂級項目。這意味着,這些項目將能夠得到積極的發展和社區的大力支持。

你不知道的六大Apache大數據項目新星

大多數人都聽過的Apache Spark,一個針對Streaming, SQL,機器學習和圖形處理的內置模塊的大數據處理架構。 IBM和其他公司正在投入數十億美金開發資金到Spark項目,NASA和SETI Institute正在利用Spark的機器學習能力,合作分析TB數量級的外太空無線信號數據,尋找外星智能生命存在的形式。 继续阅读

8大排序算法圖文講解

排序算法可以分為內部排序和外部排序,內部排序是數據記錄在內存中進行排序,而外部排序是因排序的數據很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。

常見的內部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸併排序、快速排序、堆排序、基數排序等。

本文將依次介紹上述八大排序算法。 继续阅读

分佈式TensorFlow:在Spark上將谷歌的深度學習圖書館進行尺度變換

介紹

Arimo的日益增長的數據科學團隊包括研究和開發機器學習和深入學習新的方法和應用。

我們正在調查的一個主題是分佈式的深度學習。當數據集和模型非常大時,我們就會發現與深度學習相融合的模式和預測值的價值和品種。然而,如果數據或模型不適合機器的內存,培養大型模型可能就會很慢或很難。我們高興地看到谷歌開源了TensorFlow深度學習庫,這樣我們能夠在分佈式Spark環境中運行TensorFlow。

這篇文章是對Arimo的演講題目的概述:Spark的分佈式TensorFlow:2016年Spark東部峰會上提出了調試谷歌深度學習圖書館。 继续阅读

六款好用的Python IDE

“工欲善其事,必先利其器”,如果說編程是程序員的手藝,那麼IDE就是程序員吃飯的傢伙了。

一個優秀的IDE,最重要的就是在普通文本編輯之外,提供針對特定語言的各種快捷編輯功能,讓程序員儘可能快捷、舒適、清晰的瀏覽、輸入、修改代碼。對於一個現代的IDE來說,語法着色、錯誤提示、代碼摺疊、代碼完成、代碼塊定位、重構,與調試器、版本控制系統(CVS)的集成等等都是重要的功能。以插件、擴展系統為代表的可定製框架,是現代IDE的另一個流行趨勢。 继续阅读

關於Python類屬性與實例屬性的討論

之所以想寫這個文章是因為碰巧看到網上一篇關於Pyhon中類屬性及實例屬性區別的帖子。因為我之前也被這個問題困擾過,今天碰巧看到了這篇帖子,發現帖子的作者只是描述了現象,然後對原因的解釋比較含糊,並沒有從根本上解釋這個問題,所以才想寫一下我對這個問題的想法。 继续阅读

用Python做自然語言處理必知的八個工具

Python以其清晰簡潔的語法、易用和可擴展性以及豐富龐大的庫深受廣大開發者喜愛。其內置的非常強大的機器學習代碼庫和數學庫,使Python理所當然成為自然語言處理的開發利器。

那麼使用Python進行自然語言處理,要是不知道這8個工具就真的Out了。

NLTK

NLTK是使用Python處理語言數據的領先平台。它為像WordNet這樣的詞彙資源提供了簡便易用的界面。它還具有為文本分類(classification)、文本標記(tokenization)、詞幹提取(stemming)、詞性標記(tagging)、語義分析(parsing)和語義推理(semantic reasoning)準備的文本處理庫。 继续阅读

一個適合小公司用的開源數據管道工具

最近在Prettyyes一直想建立起非常專業的data pipeline系統,然後沒有很多時間,這幾個禮拜正好app上線,有時間開始建立自己的 data pipeline,能夠很好的做每天的數據導入,數據收集,以及數據分析。

什麼是ETL

ETL 是常用的數據處理,在以前的公司里,ETL 差不多是數據處理的基礎,要求非常穩定,容錯率高,而且能夠很好的監控。ETL的全稱是 Extract,Transform,Load, 一般情況下是將亂七八糟的數據進行預處理,然後放到儲存空間上。可以是SQL的也可以是NOSQL的,還可以直接存成file的模式。

一開始我的設計思路是,用幾個cron job和celery來handle所有的處理,然後將我們的log文件存在hdfs,還有一些數據存在mysql,大概每天跑一次。核心是能夠scale,穩定,容錯,roll back。我們的data warehouse就放在雲上,就簡單處理了。 继续阅读

問世40年,它仍是編寫分佈式應用使用率最高的編程模型

遠程過程調用(RPC)範式的出現可以追溯到40年之前。時至今日,它仍是在編寫分佈式應用時使用率最高的一種編程模型。只是近些年來,人們對於RPC技術的質疑與批評聲逐漸多了起來。Steve Vinoski在2008年曾尖銳地指出,之所以RPC仍然能夠得到諸多開發者的支持,其原因只有一個:舒適感!Vinoski完全不認可這種思想,他表示:
“開發者的舒適感真的比正確性、可伸縮性、性能、關注分離、可擴展性以及附加的複雜性還要重要嗎?”
儘管面臨著這些尖銳的批評,但RPC的歷史地位是不容置疑的,而它在現代化的應用中仍能夠佔據一席之地,成為分佈式計算中一種重要的編程模型。正在攻讀博士學位的Christopher Meiklejohn近來開設了一系列博客文章以回顧分佈式計算中的各種編程模型與語言,在其中一篇文章中對RPC進行了詳盡的回顧與展望。
概述
簡單來說,一台機器上的程序對另一台機器上的子程序的調用就是一次RPC調用。在調用過程中,主程序不需要操心與遠程執行相關的任何代碼,與本地調用相比,其唯一區別就在於需要提供遠程節點的標識。最早為人所知並接受的RPC實現是由Sun提供的SunRPC機制,使用在其網絡文件系統(NFS)中。

继续阅读

蒙特卡羅(Monte Carlo)方法簡介

蒙特卡羅(Monte Carlo)方法,也稱為計算機隨機模擬方法,是一種基於”隨機數”的計算方法。

一 起源
這一方法源於美國在第二次世界大戰進研製原子彈的”曼哈頓計劃”。Monte Carlo方法創始人主要是這四位:Stanislaw Marcin Ulam, Enrico Fermi, John von Neumann(學計算機的肯定都認識這個牛人吧)和 Nicholas Metropolis。

蒙特卡羅(Monte Carlo)方法簡介 |emailtry.com

Stanislaw Marcin Ulam是波蘭裔美籍數學家,早年是研究拓撲的,后因參與曼哈頓工程,興趣遂轉嚮應用數學,他首先提出用Monte Carlo方法解決計算數學中的一些問題,然後又將其應用到解決鏈式反應的理論中去,可以說是MC方法的奠基人;Enrico Fermi是個物理大牛,理論和實驗同時都是大牛,這在物理界很少見,在“物理大牛的八卦”那篇文章里提到這個人很多次,對於這麼牛的人只能是英年早逝了(別說我嘴損啊,上帝都嫉妒!);John von Neumann可以說是計算機界的牛頓吧,太牛了,結果和Fermi一樣,被上帝嫉妒了;Nicholas Metropolis,希臘裔美籍數學家,物理學家,計算機科學家,這個人對Monte Carlo方法做的貢獻相當大,正式由於他提出的一種什麼算法(名字忘了),才使得Monte Carlo方法能夠得到如此廣泛的應用,這人現在還活着,與前幾位牛人不同,Metropolis很專一,他一生主要的貢獻就是Monte Carlo方法。

继续阅读

Python黑魔法,一行實現并行化

Python 在程序并行化方面多少有些聲名狼藉。撇開技術上的問題,例如線程的實現和 GIL,我覺得錯誤的教學指導才是主要問題。常見的經典 Python 多線程、多進程教程多顯得偏“重”。而且往往隔靴搔癢,沒有深入探討日常工作中最有用的內容。

傳統的例子
簡單搜索下“Python 多線程教程”,不難發現幾乎所有的教程都給出涉及類和隊列的例子:
#Example.py
”’
Standard Producer/Consumer Threading Pattern
”’
import time
import threading
import Queue
class Consumer(threading.Thread):
    def __init__(self, queue):
        threading.Thread.__init__(self)

继续阅读