Skip to content

Instantly share code, notes, and snippets.

View matstani's full-sized avatar

matstani matstani

View GitHub Profile
@matstani
matstani / component.clj
Created August 17, 2014 19:40
ringアプリケーションをcomponent化
(ns example-component-ring.component
(:require [com.stuartsierra.component :as component]
[example-component-ring.handler :refer [app]]
[ring.adapter.jetty :refer [run-jetty]]))
;; HTTPサーバコンポーネント
(defrecord HttpServer [port server]
component/Lifecycle
(start [this]
(if server
@matstani
matstani / user.clj
Created August 17, 2014 20:25
componentフレームワークを利用したシステムの起動・停止・リロード関数
(ns user
(:require [com.stuartsierra.component :as component]
[clojure.tools.namespace.repl :refer (refresh)]
[example-component-ring.component :as app]))
(def system nil)
;; システム初期化
(defn init []
(alter-var-root #'system
@matstani
matstani / component.clj
Last active August 29, 2015 14:05
HttpServerコンポーネントはDatabaseコンポーネントを利用する
(ns example-component-ring.component
(:require [com.stuartsierra.component :as component]
[monger.core :as mg]
[example-component-ring.handler :refer [app]]
[ring.adapter.jetty :refer [run-jetty]]))
;; データベースコンポーネント
(defrecord Database [connection]
component/Lifecycle
(start [this]
@matstani
matstani / component.clj
Last active August 29, 2015 14:05
ringハンドラにDatabaseコンポーネントを渡す
(ns example-component-ring.component
(:require [com.stuartsierra.component :as component]
[monger.core :as mg]
[example-component-ring.handler :refer [app]]
[ring.adapter.jetty :refer [run-jetty]]))
;; データベースコンポーネント
(defrecord Database [connection]
component/Lifecycle
(start [this]
@matstani
matstani / handler.clj
Created August 17, 2014 22:01
ringハンドラ内でDatabaseコンポーネントを利用
(ns example-component-ring.handler
(:require [clojure.string :as str]
[compojure.core :refer :all]
[compojure.handler :as handler]
[compojure.route :as route]
[monger.collection :as mc]
[monger.core :as mg]))
(defn get-entries [{:keys [connection]}]
(let [db (mg/get-db connection "mydb")]
@matstani
matstani / already_running.rb
Created April 2, 2015 08:46
Rubyスクリプト二重起動チェック
def already_running?
p_name = `cat /proc/#{$$}/cmdline | xargs --null`.strip()
pid = `pgrep -oxf "#{p_name}"`.strip()
pid != $$.to_s
end
@matstani
matstani / zf2-subquery-join.php
Last active September 1, 2015 09:11
ZF2 JOIN句に副問い合わせ
<?php
$sm = $this->getServiceLocator();
$adapter = $sm->get('Zend\Db\Adapter\Adapter');
$sql = new \Zend\Db\Sql\Sql($adapter);
$select = $sql->select();
$select->from('album');
//副問い合わせ用selectオブジェクト
$subselect = $sql->select();
$subselect->from('album');
@matstani
matstani / handler.clj
Created December 1, 2015 09:48
handler component using jdbc-ring-session as session store.
(ns myapp.component.handler
(:require [com.stuartsierra.component :as component]
[compojure.core :as compojure]
[jdbc-ring-session.core :refer [jdbc-store]]))
(defn- find-routes [component]
(keep :routes (vals component)))
(defn- middleware-fn [component middleware]
(if (vector? middleware)
@matstani
matstani / nested.clj
Created December 9, 2015 04:27
process nested map in clojure.
(def divisions
{:division1
{:group1 [:staff1 :staff2]
:group2 [:staff3 :staff4 :staff5]}
:division2
{:group3 [:staff6 :staff7]}})
(for [[d groups] divisions
[g staffs] groups]
[d g staffs])
@matstani
matstani / nested.clj
Created December 9, 2015 04:53
update nested map in clojure.
(def divisions
{:division1
{:group1 [:staff1 :staff2]
:group2 [:staff3 :staff4 :staff5]}
:division2
{:group3 [:staff6 :staff7]}})
(reduce
(fn [ds [d g staffs]]
(assoc-in ds [d g] (remove #{:staff2} staffs)))