2015년 11월 7일 토요일

새벽의 취미 생활

토요일이다. 새벽에 일어나서, 어제 저녁에 트위터에 올라와 보던 글을 다시 한 번 읽어 본다.

4 Weeks of Golang: The Good, the Bad, and the Ugly

브라우저에는 Safari Books Online의 책이 열려 있다.

Clojure Reactive Programming

당면한 프로젝트에 사용할 웹 프레임 웍 중 하나로 보고 있는 Gin 홈페이지도 열려 있다.

https://gin-gonic.github.io/gin/

그리고는 Dave Cheney의 동영상과 David Nolen의 ClojureScript 동영상을 한 편씩 본다.

The Legacy of Go by Dave Cheney - GothamGo 2015 Closing Keynote
Alan Kay가 말했다는 "Programming is a pop culture". 공감. gofmt, Interfaces, Goroutines
ClojureScript: Lisp's Revenge by David Nolen
Revenge까지는.
그리고 Dave Cheney의 홈페이지에 가서 Go와 Rust에 대한 글들을 읽는다.

http://dave.cheney.net/2015/10/30/programming-language-markets
Programming Language Markets를 보면 Web/Mobile이 대세라는 것을 알 수 있다. Backend를 차지 하기 위한 경쟁. 그 외 모든 부분에서 C/C++를 대체하기는 요원해보인다.
http://dave.cheney.net/2015/07/02/why-go-and-rust-are-not-competitors
경쟁 상대는 아니지. Rust는 좀더 근본적인 것을 해결하려는 것이고, 잘 되어서 C/C++을 대신할 수 있길 기대.
http://dave.cheney.net/2015/08/08/performance-without-the-event-loop
Go의 최대 장점
http://dave.cheney.net/2015/11/05/lets-talk-about-logging
좀 억지스럽다고 할까. Feature를 최소화해야 한다는 생각에는 동의. 
http://dave.cheney.net/2014/10/17/functional-options-for-friendly-apis
Optional parameter가 없으니 참 고생들 한다.

오늘의 프로그래밍언어 오덕질/프오덕질/포덕질?

어제 저녁부터 계속 비가 내리고, 화면 오른쪽 상단에 "Firefox 42.0 available" 알림이 뜬다.

2015년 10월 20일 화요일

AWS Lambda 로컬 개발 환경


AWS Lambda가 여러가지 면에서 끌리는데 도입이 꺼려지는 이유가 있다. 공식 로컬 개발환경을 제공해주지 않는다는 점. 매번 AWS에 올려서 테스트를 해야 한다니.

그래서 이미 이 문제를 고민한 사람들이 있으리라는 생각으로 구글링을 좀 해봤다. 아래와 같은 웹 페이지들을 발견.


그나마, 모두 Node.js를 사용하는 방법들 뿐이다.

곧 Amazon에서 로컬 개발환경을 제공하겠지만, 그 전까지는 불편함을 다른 개발자들이 제공한 툴로 해결할 수 밖에 없겠다.

Google App Engine의 대안으로 선택을 하려고 한 이유가 App Engine의 Data Store 때문이었는데, 몇년만에 들여다 보니 App Engine에서 Google Cloud SQL을 사용할 수 있게 해준다.

뭘 선택하든 이런 플랫폼을 사용하게 되면 얻게되는 이점은 크지만, 종속성은 어쩔 수 없겠다. 내가 원하는 실행 환경을 사용할 수도 없다는 것도 단점.

2015년 10월 15일 목요일

프로그래밍 언어들

시작은 애플 베이직이었다.

APPLE BASIC (1984년)
APPLE Assembly (1984년)
Pascal / CPM
Turbo Pascal (1989년)
Turbo C
C++ (1990년)
Lisp (1992년? 신선함!)
Perl (처음 읽었던 책이 Learning Perl이었나, Programming Perl이었나 확실하지 않다. 정말 재밌었다)
Python (1.5부터 사용했었던듯. Perl을 주로 사용하다 Python으로 넘어갔다)
Visual C++, Visual Basic (1996년)
Java (가장 많이 사용했던 때는 2007년, 2012년)
Objective-C (iOS 개발을 시작한 후 2008년)

뭔가 빠진 것 같은데, 기억이 안난다.

언제부터였던가 프로그래밍언어 덕후가 된 후. 최근에 관심을 가지고 보고 있는 프로그래밍 언어들.

Haskell
Clojure
Rust
Elixir
Nim
Go

언어별로 잘 맞는 분야가 있는 것 같다.

처음 Perl을 사용할 때의 재미를 다시 느껴보고 싶어서, 이런 저런 프로그래밍 언어들을 들여다 보고 있는건가..

2015년 9월 4일 금요일

How to check Windows System Service status with Python


You can check Windows system service status using Python.

Using psutil

>>> import win32serviceutil
>>> win32serviceutil.QueryServiceStatus("Service_Name")
(272, 4, 7, 0, 0, 0, 0) # 4 means it's running
>>> win32serviceutil.QueryServiceStatus("Service_Name")
(272, 1, 0, 0, 0, 0, 0) # 1 means it's stopped

Using wmi

You can lookup with conditions like StartMode and State. Following code enumerates services whose StartMode is "Disabled" and current State is "Stopped".

>>> import wmi
>>> c=wmi.WMI()
>>> c.Win32_Service(StartMode="Disabled", State="Stopped")
[<_wmi_object: \\YEONSH-PC\root\cimv2:Win32_Service.Name="aspnet_state">, <_wmi_object: \\YEONSH-PC\root\cimv2:Win32_Service.Name="clr_optimization_v2.0.50727_32">, <_wmi_object: \\YEONSH-PC\root\cimv2:Win32_Service.Name="clr_optimization_v2.0.50727_64">, <_wmi_object: \\YEONSH-PC\root\cimv2:Win32_Service.Name="Mcx2Svc">, <_wmi_object: \\YEONSH-PC\root\cimv2:Win32_Service.Name="NetMsmqActivator">, <_wmi_object: \\YEONSH-PC\root\cimv2:Win32_Service.Name="NetPipeActivator">, <_wmi_object: \\YEONSH-PC\root\cimv2:Win32_Service.Name="NetTcpActivator">, <_wmi_object: \\YEONSH-PC\root\cimv2:Win32_Service.Name="NetTcpPortSharing">, <_wmi_object: \\YEONSH-PC\root\cimv2:Win32_Service.Name="RemoteAccess">]

Check if specific service is running or not. Empty array is returned if the service is not running.

>>> c.Win32_Service(Name="Netlogon", State="Running")
[]

2015년 7월 28일 화요일

brew install python


아니, pip도 설치 안되어 있었네. 놀라며 brew install python. 따라 오는 것들이 많다.

➜  UI git:(2.5_dev) brew install python
==> Installing dependencies for python: readline, sqlite, gdbm, openssl
==> Installing python dependency: readline
==> Downloading https://homebrew.bintray.com/bottles/readline-6.3.8.yosemite.bottle.tar.gz
######################################################################## 100.0%
==> Pouring readline-6.3.8.yosemite.bottle.tar.gz
==> Caveats
This formula is keg-only, which means it was not symlinked into /usr/local.

OS X provides similar software, and installing this software in
parallel can cause all kinds of trouble.

OS X provides the BSD libedit library, which shadows libreadline.
In order to prevent conflicts when programs look for libreadline we are
defaulting this GNU Readline installation to keg-only.

Generally there are no consequences of this for you. If you build your
own software and it requires this formula, you'll need to add to your
build variables:

    LDFLAGS:  -L/usr/local/opt/readline/lib
    CPPFLAGS: -I/usr/local/opt/readline/include

==> Summary
🍺  /usr/local/Cellar/readline/6.3.8: 40 files, 2.1M
==> Installing python dependency: sqlite
==> Downloading https://homebrew.bintray.com/bottles/sqlite-3.8.10.2.yosemite.bottle.tar.gz
######################################################################## 100.0%
==> Pouring sqlite-3.8.10.2.yosemite.bottle.tar.gz
==> Caveats
This formula is keg-only, which means it was not symlinked into /usr/local.

OS X already provides this software and installing another version in
parallel can cause all kinds of trouble.

OS X provides an older sqlite3.

Generally there are no consequences of this for you. If you build your
own software and it requires this formula, you'll need to add to your
build variables:

    LDFLAGS:  -L/usr/local/opt/sqlite/lib
    CPPFLAGS: -I/usr/local/opt/sqlite/include

==> Summary
🍺  /usr/local/Cellar/sqlite/3.8.10.2: 9 files, 2.8M
==> Installing python dependency: gdbm
==> Downloading https://homebrew.bintray.com/bottles/gdbm-1.11.yosemite.bottle.2.tar.gz
######################################################################## 100.0%
==> Pouring gdbm-1.11.yosemite.bottle.2.tar.gz
🍺  /usr/local/Cellar/gdbm/1.11: 17 files, 532K
==> Installing python dependency: openssl
==> Downloading https://homebrew.bintray.com/bottles/openssl-1.0.2d_1.yosemite.bottle.tar.gz
######################################################################## 100.0%
==> Pouring openssl-1.0.2d_1.yosemite.bottle.tar.gz
==> Caveats
A CA file has been bootstrapped using certificates from the system
keychain. To add additional certificates, place .pem files in
  /usr/local/etc/openssl/certs

and run
  /usr/local/opt/openssl/bin/c_rehash

This formula is keg-only, which means it was not symlinked into /usr/local.

OS X already provides this software and installing another version in
parallel can cause all kinds of trouble.

Apple has deprecated use of OpenSSL in favor of its own TLS and crypto libraries

Generally there are no consequences of this for you. If you build your
own software and it requires this formula, you'll need to add to your
build variables:

    LDFLAGS:  -L/usr/local/opt/openssl/lib
    CPPFLAGS: -I/usr/local/opt/openssl/include

==> Summary
🍺  /usr/local/Cellar/openssl/1.0.2d_1: 464 files, 18M
==> Installing python
==> Downloading https://homebrew.bintray.com/bottles/python-2.7.10_2.yosemite.bottle.tar.gz
######################################################################## 100.0%
==> Pouring python-2.7.10_2.yosemite.bottle.tar.gz
==> Caveats
Pip and setuptools have been installed. To update them
  pip install --upgrade pip setuptools

You can install Python packages with
  pip install <package>

They will install into the site-package directory
  /usr/local/lib/python2.7/site-packages

See: https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/Homebrew-and-Python.md

.app bundles were installed.
Run `brew linkapps python` to symlink these to /Applications.
==> /usr/local/Cellar/python/2.7.10_2/bin/python -s setup.py --no-user-cfg install --force --verbose --single-version-externally-mana
==> /usr/local/Cellar/python/2.7.10_2/bin/python -s setup.py --no-user-cfg install --force --verbose --single-version-externally-mana
==> /usr/local/Cellar/python/2.7.10_2/bin/python -s setup.py --no-user-cfg install --force --verbose --single-version-externally-mana
==> Summary
🍺  /usr/local/Cellar/python/2.7.10_2: 4866 files, 76M

2015년 7월 15일 수요일

읽은 횟수에 따른 마킹 색상

책을 처음 읽을 때는 노란색.
두번째 읽을 때는 녹색.
세번째 읽을 때는 파란색.
네번째 읽을 때는 분홍색.
다섯번째 읽을 때는 검은색으로 아예 가려 버린다.