воскресенье, сентября 22, 2013

Ссылки 2013-09

http://devgirl.org/2013/06/10/quick-start-guide-phonegap-and-angularjs/
Quick Start Guide to PhoneGap+AngularJS

http://outof.me/navigation-drawer-pattern-with-topcoat-css-library/
NAVIGATION DRAWER PATTERN WITH TOPCOAT CSS LIBRARY

http://devgirl.org/2013/08/29/totally-rad-topcoat/
Totally Rad Topcoat!

http://coenraets.org/blog/2013/06/sample-mobile-phonegap-application-with-backbone-js-and-topcoat/
Sample Mobile / PhoneGap Application with Backbone.js and Topcoat

http://geospatialscott.blogspot.ru/2012/04/phonegap-leaflet-tilemill-offline.html
Phonegap + Leaflet + TileMill = Offline Mobile Maps

четверг, августа 15, 2013

Tree в Mac OS X

#!/bin/bash
find . -print 2>/dev/null | awk '!/\.$/ { \
for (i=1; i<NF; i++) { \
printf("%4s", "|") \
} \
print "-- "$NF \
}' FS='/'

$ chmod 755 /usr/local/bin/tree

суббота, августа 03, 2013

Ссылки 2013-08

Bootstrap

http://todc.github.io/todc-bootstrap/index.html
TODC Bootstrap. A Google-styled theme for Twitter Bootstrap.

http://todc.github.io/todc-select2/#basics
todc-select2 is a Google-themed fork of ivaynberg's excellent Select2 library

Select2

https://github.com/ivaynberg/select2/issues/1134
add footer to select2

https://github.com/ivaynberg/select2/issues/458
Support for actionable menu item in select list

AngularJS

http://www.yearofmoo.com/2013/01/full-spectrum-testing-with-angularjs-and-karma.html
Full-Spectrum Testing with AngularJS and Karma

https://github.com/angular/angular.js/issues/1924
ngModel is locked into the isolate scope when used on a component!!!!!!!!!!

http://jsbin.com/ebuhuv/7/edit
simple tabs prototype

http://jsfiddle.net/EF5Jp/
Set element scope value by name

http://jsbin.com/ikanek/1/edit
Set value in parent scope from isolated scope

http://jsfiddle.net/asgoth/cAkCx/
repeat dynamic template in directive

http://www.codinginsight.com/angularjs-directives/
transclusion function sample

http://plnkr.co/edit/qrDMJBlnwdNlfBqEEXL2?p=preview
Compilation Process

http://jsfiddle.net/passelin/LkrcD/
Nested directives

http://jsfiddle.net/mrajcok/StXFK/
Nested directives

https://github.com/eu81273/angular.treeview
AngularJS based Treeview (no jQuery)

http://jsfiddle.net/n8dPm/
Simple treeview

http://habrahabr.ru/post/164493/
Директивы в AngularJS

Play framework 2

http://stackoverflow.com/questions/16370704/force-play-framework-to-listen-on-localhost-only?answertab=active#tab-top
Force Play Framework to listen on localhost only

http://stackoverflow.com/questions/13147089/specifying-play-2-0-port-with-dist?answertab=active#tab-top
Specifying Play 2.0 port

https://groups.google.com/forum/#!topic/play-framework/yoA7eRmLsUc
run evolutions at play 2.0 start automatically

SSH

http://stackoverflow.com/questions/343711/transferring-files-over-ssh?answertab=votes#tab-top
Transferring files over SSH

Mac OS X

http://peterdowns.com/posts/open-iterm-finder-service.html
Opening iTerm From a Finder Directory

Ubuntu

http://help.ubuntu.ru/wiki/start-stop-daemon
Ubuntu start-stop-daemon

Git

http://scribu.net/blog/git-alias-for-updating-submodules.html
Easier way to update submodules in git

HAProxy

http://blog.exceliance.fr/2013/06/13/ssl-client-certificate-information-in-http-headers-and-logs/
SSL Client certificate information in HTTP headers and logs

Dynamic reverse proxy

https://github.com/nodejitsu/node-http-proxy
A full-featured http proxy for node.js

http://stackoverflow.com/questions/7690751/node-http-proxy-dynamic-routetable?answertab=active#tab-top
Node-http-proxy dynamic routetable?

http://sosedoff.com/2012/05/01/dynamic-http-proxy-with-nodejs-and-redis.html
Dynamic HTTP proxy with Node.js and Redis

http://stackoverflow.com/questions/14599901/read-expiration-date-and-common-name-from-ssl-certificate-using-node-js?answertab=active#tab-top
Read expiration date and common name from SSL certificate using Node.js

https://github.com/observing/balancerbattle
nginx vs haproxy vs node-http-proxy as reverse proxy

понедельник, июля 15, 2013

Ссылки 2013-07

Objective-C/Cocoa

https://github.com/ReactiveCocoa/ReactiveCocoa
A framework for composing and transforming streams of values

https://www.cocoacontrols.com
1365 open source and commercial UI components for iOS and OS X.

https://github.com/bennyguitar/News-YC---iPhone
The iPhone version of News/YC, a Hacker News reader and interactive iOS application.

https://github.com/Inferis/ViewDeck
An implementation of the sliding functionality found in the Path 2.0 or Facebook iOS apps.

https://github.com/gimenete/iOS-boilerplate
iOS-app template with lots of common tasks solved

https://github.com/gmoledina/GMGridView
A performant Grid-View for iOS (iPhone/iPad) that allows sorting of views with gestures (the user can move the items with his finger to sort them) and pinching/rotating/panning gestures allow the user to play with the view and toggle from the cellview to a fullsize display.

https://github.com/honcheng/PaperFold-for-iOS
Paper folding animation for iOS

https://github.com/mapbox/mapbox-ios-sdk
MapBox iOS SDK, an open source alternative to MapKit.

https://github.com/mapbox/mapbox-ios-example
Example app showing use of MapBox technologies on native iOS.

http://blueottersoftware.com/embedding-route-me-with-xcode-4-x/
Embedding route-me with XCode 4.x

https://github.com/grgcombs/iOS-Shapefile/tree/master/Frameworks/Proj.4/src
Proj.4 iOS

UI

http://interfacesketch.tumblr.com/
Free sketch templates for web, mobile and tablet (PDF).

http://stanfy.com/blog/iphone-ipad-printable-sketching-templates/
iPhone & iPad printable sketching templates (PDF).

http://pttrns.com/
iOS UI patterns

http://www.lovelyui.com/
iOS UI patterns

http://www.patternsofdesign.co.uk/
iOS UI patterns

AngularJS

http://gonzalo123.com/2013/07/08/dynamic-routes-with-angularjs-and-silex/
Dynamic routes with AngularJS and Silex

http://gregorypratt.github.io/AngularDynamicRouting/
Angular Dynamic Routing

PlayFramework 2

http://stackoverflow.com/questions/9723224/how-to-manage-application-conf-in-several-environments-with-play-2-0?answertab=active#tab-top
How to manage application.conf in several environments with play 2.0?

http://logician.eu/2013/03/26/multi-modular-development-with-play-2-1/
Multi-modular development with Play 2.1

https://github.com/playframework/playframework/blob/master/framework/src/play/src/main/scala/play/api/controllers/ExternalAssets.scala
ExternalAssets

http://stackoverflow.com/questions/11506823/can-play-2-x-match-dynamic-urls-like-so?answertab=active#tab-top
create your own requestDispatcher in routes

GruntJS

http://iambot.net/building-a-javascript-project-using-node-dot-js-and-grunt.html
Building a JavaScript Project Using Node.js and Grunt

https://github.com/rma4ok/grunt-bg-shell
grunt-bg-shell

https://github.com/angular-app/angular-app/blob/master/client/gruntFile.js
angular-app project grunt file

Mac OS X

http://peterdowns.com/posts/open-iterm-finder-service.html
Opening iTerm From a Finder Directory

понедельник, июня 24, 2013

Минималистичный twitter finagle сервер

По мотивам http://twitter.github.io/twitter-server/index.html

1) Выкачиваем скрипт запуска sbt
curl -O https://raw.github.com/twitter/finagle/master/sbt
chmod 775 sbt

2) Создаем файл project/Build.scala для sbt
mkdir project
cat > project/Build.scala

import sbt._
import Keys._
import Tests._
import sbtassembly.Plugin._

object TestTwitterServer extends Build {

  lazy val testTwitterServer = Project(
    id = "test-twitter-server",
    base = file("."),
    settings = Project.defaultSettings ++
      assemblySettings
  ).settings(
    name := "test-twitter-server",
    libraryDependencies ++= Seq(
      "com.twitter" %% "twitter-server" % "1.0.1"
    ),
    resolvers += "twitter-repo" at "http://maven.twttr.com"

  )

}

CTRL-D

3) Создаем файл project/plugins.sbt для sbt
cat > project/plugins.sbt

resolvers += Resolver.url("sbt-plugin-releases", new URL("http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases"))(Resolver.ivyStylePatterns)

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.9.0")

CTRL-D

4) Создаем файл приложения app.scala

cat > app.scala

import com.twitter.conversions.time._
import com.twitter.finagle.http.HttpMuxer
import com.twitter.finagle.{Http, Service}
import com.twitter.server.TwitterServer
import com.twitter.util.{Await, Duration, Future, Time}
import java.net.InetSocketAddress
import org.jboss.netty.buffer.ChannelBuffers.copiedBuffer
import org.jboss.netty.handler.codec.http._
import org.jboss.netty.util.CharsetUtil.UTF_8

object AdvancedServer extends TwitterServer {

  val what = flag("what", "hello", "String to return")
  val addr = flag("bind", new InetSocketAddress(0), "Bind address")
  val durations = flag("alarms", (1.second, 5.second), "2 alarm durations")
  val counter = statsReceiver.counter("requests_counter")

  val service = new Service[HttpRequest, HttpResponse] {
    def apply(request: HttpRequest) = {
      log.debug("Received a request at " + Time.now)
      counter.incr()
      val response =
        new DefaultHttpResponse(request.getProtocolVersion, HttpResponseStatus.OK)
      val content = copiedBuffer(what() + "\n", UTF_8)
      response.setContent(content)
      Future.value(response)
    }
  }

  def main() {
    // We can create a new http server but in that case we profit from the
    // one already started for /admin/*
    // The `TwitterServer` trait exposes a `httpServer` that serve all routes
    // registered in the HttpMuxer object, we just have to add our own.
    HttpMuxer.addHandler("/echo", service)
    // And wait on the server
    Await.ready(httpServer)
  }
}

CTRL-D

5) Стартуем
$ ./sbt run

CTRL-C

6) Собираем в один jar
$ ./sbt assembly

среда, июня 19, 2013

Ссылки 2013-06

Scala

http://eed3si9n.com/learning-scalaz/
learning Scalaz

http://mauricio.github.io/2013/04/29/async-database-access-with-postgresql-play-scala-and-heroku.html
Async database access with PostgreSQL, Play, Scala and Heroku

AngularJS

http://ngmodules.org/
Find Modules for AngularJS

http://plnkr.co/tags/angularjs
online community for creating, collaborating on and sharing your web development ideas

http://it-ebooks.info/book/2076/
AngularJS book

http://www.egghead.io/
AngularJS video

https://github.com/btford/angular-dragon-drop
Drag and Drop for AngularJS

https://github.com/angular/angularjs-batarang
AngularJS WebInspector Extension for Chrome

http://tombatossals.github.io/angular-leaflet-directive/
Leaflet directive for AngularJS

https://github.com/jeffbcross/ngswipe-demo
Angular reader is a simple Atom feed reader app that shows off some new features in AngularJS, and generally shows off the simplicity of building apps with Angular.

https://github.com/yeoman/yeoman
Yeoman, Yo + Bower + Grunt = Javacript application generator + Package manager + Compiler


вторник, июня 11, 2013

Mac OS X 10.7.X и HP M1120

Самая advanced операционная система не дружит со сканером многофункциональных HP.
К примеру, чтобы отсканировать на HP M1120 в Mac OS X 10.7.X, надо установить драйвер для Mac OS X 10.5.X, а потом ручками запустить HP Setup Assistant для установки HP Director

$ sudo /Applications/HP\ LaserJet\ M1120\ MFP\ Series/HP\ Setup\ Assistant.app/Contents/MacOS/HP\ Setup\ Assistant

Такие дела.

понедельник, апреля 15, 2013

Локальный сервер OpenStreetMap в 25 шагов

Совместно с Романом Смирновым собрали локальный сервер OpenStreetMap.

1. Ставим Ubuntu 12.10-server-x64, при инсталляции устанавливаем OpenSSH server, LAMP server, PostgreSQL server

2. Обновляем систему
$ sudo apt-get update
$ sudo apt-get upgrade

3. Устанавливаем необходимые пакеты
$ sudo apt-get install accountsservice acpid adduser apache2 apache2-mpm-prefork apache2-threaded-dev apache2-utils apache2.2-bin apache2.2-common apparmor apport apport-symptoms apt apt-transport-https apt-utils apt-xapian-index aptitude aptitude-common at autoconf automake autotools-dev base-files base-passwd bash bash-completion bc bind9-host binutils biosdevname bsdmainutils bsdutils build-essential busybox-initramfs busybox-static byobu bzip2 ca-certificates comerr-dev command-not-found command-not-found-data console-setup consolekit coreutils cpio cpp cpp-4.7 crda cron curl dash dbus dconf-gsettings-backend:amd64 dconf-service debconf debconf-i18n debianutils diffutils dmidecode dmsetup dnsutils dosfstools dpkg dpkg-dev e2fslibs:amd64 e2fsprogs ed eject ethtool fakeroot file findutils fontconfig fontconfig-config fonts-ubuntu-font-family-console friendly-recovery ftp fuse g++ g++-4.7 gawk gcc gcc-4.7 gcc-4.7-base:amd64 gccxml geoip-bin geoip-database gettext-base gir1.2-geocodeglib-1.0 gir1.2-glib-2.0 gir1.2-json-1.0 gir1.2-soup-2.4 git git-core git-man glib-networking:amd64 glib-networking-common glib-networking-services gnupg gpgv grep groff-base grub-common grub-gfxpayload-lists grub-pc grub-pc-bin grub2-common gsettings-desktop-schemas gzip hdf5-helpers hdparm hicolor-icon-theme hostname ifupdown info initramfs-tools initramfs-tools-bin initscripts insserv install-info installation-report iproute iptables iputils-ping iputils-tracepath irqbalance isc-dhcp-client isc-dhcp-common iso-codes kbd keyboard-configuration klibc-utils krb5-locales krb5-multidev landscape-common language-pack-en language-pack-en-base language-selector-common laptop-detect less libaccountsservice0 libacl1:amd64 libagg-dev libaio1:amd64 libalgorithm-c3-perl libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libapache2-mod-php5 libapr1 libapr1-dev libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-dev libaprutil1-ldap libapt-inst1.5:amd64 libapt-pkg4.12:amd64 libarchive-zip-perl libarmadillo3 libasn1-8-heimdal:amd64 libasprintf0c2:amd64 libatk1.0-0:amd64 libatk1.0-data libattr1:amd64 libavahi-client3:amd64 libavahi-common-data:amd64 libavahi-common3:amd64 libb-hooks-endofscope-perl libbind9-80 libblas3 libblkid1:amd64 libboost-all-dev libboost-chrono-dev libboost-chrono1.49-dev libboost-chrono1.49.0 libboost-date-time-dev libboost-date-time1.49-dev libboost-date-time1.49.0 libboost-dev libboost-filesystem-dev libboost-filesystem1.49-dev libboost-filesystem1.49.0 libboost-graph-dev libboost-graph-parallel-dev libboost-graph-parallel1.49-dev libboost-graph-parallel1.49.0 libboost-graph1.49-dev libboost-graph1.49.0 libboost-iostreams-dev libboost-iostreams1.49-dev libboost-iostreams1.49.0 libboost-locale-dev libboost-locale1.49-dev libboost-locale1.49.0 libboost-math-dev libboost-math1.49-dev libboost-math1.49.0 libboost-mpi-dev libboost-mpi-python-dev libboost-mpi-python1.49-dev libboost-mpi-python1.49.0 libboost-mpi1.49-dev libboost-mpi1.49.0 libboost-program-options-dev libboost-program-options1.49-dev libboost-program-options1.49.0 libboost-python-dev libboost-python1.49-dev libboost-python1.49.0 libboost-random-dev libboost-random1.49-dev libboost-random1.49.0 libboost-regex-dev libboost-regex1.49-dev libboost-regex1.49.0 libboost-serialization-dev libboost-serialization1.49-dev libboost-serialization1.49.0 libboost-signals-dev libboost-signals1.49-dev libboost-signals1.49.0 libboost-system-dev libboost-system1.49-dev libboost-system1.49.0 libboost-test-dev libboost-test1.49-dev libboost-test1.49.0 libboost-thread-dev libboost-thread1.49-dev libboost-thread1.49.0 libboost-timer-dev libboost-timer1.49-dev libboost-timer1.49.0 libboost-wave-dev libboost-wave1.49-dev libboost-wave1.49.0 libboost1.49-dev libbsd0:amd64 libbz2-1.0:amd64 libbz2-dev:amd64 libc-bin libc-dev-bin libc6:amd64 libc6-dev:amd64 libcairo-gobject2:amd64 libcairo-script-interpreter2:amd64 libcairo2:amd64 libcairo2-dev libcairomm-1.0-1:amd64 libcairomm-1.0-dev:amd64 libcap-ng0 libcap2:amd64 libcf0 libcgi-fast-perl libcheck-isa-perl libck-connector0:amd64 libclass-accessor-perl libclass-c3-perl libclass-c3-xs-perl libclass-data-inheritable-perl libclass-isa-perl libclass-load-perl libclass-load-xs-perl libclass-trigger-perl libcomerr2:amd64 libcommon-sense-perl libcups2:amd64 libcurl3:amd64 libcurl3-gnutls:amd64 libcurl4-gnutls-dev libcwidget3 libdap-dev:amd64 libdap11:amd64 libdapclient3:amd64 libdapserver7:amd64 libdata-alias-perl libdata-optlist-perl libdata-visitor-perl libdate-manip-perl libdatrie1:amd64 libdb5.1:amd64 libdbd-mysql-perl libdbi-perl libdbi1 libdbus-1-3:amd64 libdbus-1-dev libdbus-glib-1-2:amd64 libdbus-glib-1-dev libdconf1:amd64 libdevel-globaldestruction-perl libdevel-partialdump-perl libdevmapper-event1.02.1:amd64 libdevmapper1.02.1:amd64 libdns81 libdpkg-perl libdrm-intel1:amd64 libdrm-nouveau1a:amd64 libdrm-nouveau2:amd64 libdrm-radeon1:amd64 libdrm2:amd64 libedit2:amd64 libelf1:amd64 libencode-locale-perl libepsilon0 libept1.4.12 liberror-perl libeval-closure-perl libevent-2.0-5:amd64 libexpat1:amd64 libexpat1-dev libfcgi-perl libffi6:amd64 libfile-copy-recursive-perl libfile-fcntllock-perl libfile-listing-perl libfont-afm-perl libfontconfig1:amd64 libfontconfig1-dev libfreetype6:amd64 libfreetype6-dev libfreexl1:amd64 libfribidi0:amd64 libfuse2:amd64 libgc1c2 libgcc1:amd64 libgcrypt11:amd64 libgcrypt11-dev libgdal-dev libgdal1 libgdbm3:amd64 libgdk-pixbuf2.0-0:amd64 libgdk-pixbuf2.0-common libgeo-coder-googlev3-perl libgeo-coordinates-itm-perl libgeo-coordinates-utm-perl libgeo-distance-perl libgeo-distance-xs-perl libgeo-google-mapobject-perl libgeo-googleearth-pluggable-perl libgeo-helmerttransform-perl libgeo-ip-perl libgeo-ipfree-perl libgeo-metar-perl libgeo-osm-tiles-perl libgeo-point-perl libgeo-postcode-perl libgeo-proj4-perl libgeoclue-dev libgeoclue0 libgeocode-glib-dbg libgeocode-glib-dev libgeocode-glib-doc libgeocode-glib0 libgeographiclib-dev libgeographiclib9 libgeography-countries-perl libgeography-nationalgrid-perl libgeoip-dev libgeoip1:amd64 libgeometry-primitive-perl libgeomview-1.9.4 libgeomview-dev libgeos++-dev libgeos-3.3.3 libgeos-c1 libgeos-dbg libgeos-dev libgeos-doc libgeos-ruby1.8 libgeotiff-dev libgeotiff-epsg libgeotiff2 libgeotranz3-dev libgeotranz3.1 libgfortran3:amd64 libgif-dev libgif4:amd64 libgirepository-1.0-1 libgl1-mesa-dri:amd64 libgl1-mesa-glx:amd64 libglapi-mesa:amd64 libglib2.0-0:amd64 libglib2.0-bin libglib2.0-data libglib2.0-dev libglu1-mesa:amd64 libgmp10:amd64 libgnome-keyring-common libgnome-keyring0:amd64 libgnutls-dev libgnutls-openssl27:amd64 libgnutls26:amd64 libgnutlsxx27:amd64 libgomp1:amd64 libgpg-error-dev libgpg-error0:amd64 libgpm2:amd64 libgssapi-krb5-2:amd64 libgssapi3-heimdal:amd64 libgssrpc4:amd64 libgtk2.0-0:amd64 libgtk2.0-bin libgtk2.0-common libhcrypto4-heimdal:amd64 libhdf4-0-alt libhdf4-alt-dev libhdf5-7 libhdf5-dev libhdf5-serial-dev libheimbase1-heimdal:amd64 libheimntlm0-heimdal:amd64 libhtml-form-perl libhtml-format-perl libhtml-parser-perl libhtml-tagset-perl libhtml-template-perl libhtml-template-pluggable-perl libhtml-tree-perl libhttp-cookies-perl libhttp-daemon-perl libhttp-date-perl libhttp-message-perl libhttp-negotiate-perl libhx509-5-heimdal:amd64 libibverbs-dev libibverbs1 libice-dev:amd64 libice6:amd64 libicu-dev libicu48:amd64 libidn11:amd64 libidn11-dev libio-multiplex-perl libio-socket-inet6-perl libio-socket-ssl-perl libio-string-perl libio-stringy-perl libisc83 libisccc80 libisccfg82 libitm1:amd64 libiw30:amd64 libjasper-dev libjasper1:amd64 libjbig-dev:amd64 libjbig0:amd64 libjpeg-dev libjpeg-turbo8:amd64 libjpeg-turbo8-dev:amd64 libjpeg8:amd64 libjpeg8-dev:amd64 libjs-jquery libjson-any-perl libjson-glib-1.0-0:amd64 libjson-perl libjson-xs-perl libk5crypto3:amd64 libkadm5clnt-mit8:amd64 libkadm5srv-mit8:amd64 libkdb5-6:amd64 libkeyutils1:amd64 libklibc libkms1:amd64 libkrb5-26-heimdal:amd64 libkrb5-3:amd64 libkrb5-dev libkrb5support0:amd64 liblapack3 liblcms2-2:amd64 libldap-2.4-2:amd64 libldap2-dev:amd64 liblist-moreutils-perl libllvm3.1:amd64 liblocale-gettext-perl liblockfile-bin liblockfile1:amd64 liblog-log4perl-perl libltdl-dev:amd64 libltdl7:amd64 liblwp-mediatypes-perl liblwp-protocol-https-perl liblwres80 liblzma-dev:amd64 liblzma5:amd64 libmagic1:amd64 libmailtools-perl libmath-polygon-perl libmethod-autoload-perl libmodule-implementation-perl libmodule-runtime-perl libmoose-perl libmoosex-clone-perl libmoosex-storage-perl libmount1:amd64 libmpc2:amd64 libmpfr4:amd64 libmro-compat-perl libmysqlclient-dev libmysqlclient18:amd64 libnamespace-clean-perl libncurses5:amd64 libncursesw5:amd64 libneon27-gnutls libnet-cidr-perl libnet-daemon-perl libnet-http-perl libnet-server-perl libnet-snmp-perl libnet-ssleay-perl libnetcdf-dev libnetcdfc++4 libnetcdfc7 libnetcdff5 libnewt0.52 libnfnetlink0 libnih-dbus1:amd64 libnih1:amd64 libnl-3-200:amd64 libnl-genl-3-200:amd64 libnuma1 libnumber-format-perl libodbc1:amd64 libogdi3.2 libopenmpi-dev libopenmpi1.3 libossp-uuid16 libp11-kit-dev libp11-kit0:amd64 libpackage-deprecationmanager-perl libpackage-new-perl libpackage-stash-perl libpackage-stash-xs-perl libpam-ck-connector:amd64 libpam-modules:amd64 libpam-modules-bin libpam-runtime libpam0g:amd64 libpango1.0-0:amd64 libparams-classify-perl libparams-util-perl libparse-debianchangelog-perl libparted0debian1:amd64 libpcap0.8:amd64 libpci3:amd64 libpciaccess0:amd64 libpcre3:amd64 libpcre3-dev libpcrecpp0:amd64 libpcsclite1:amd64 libpipeline1:amd64 libpixman-1-0:amd64 libpixman-1-dev libplrpc-perl libplymouth2 libpng12-0:amd64 libpng12-dev libpolkit-agent-1-0:amd64 libpolkit-backend-1-0:amd64 libpolkit-gobject-1-0:amd64 libpoppler28:amd64 libpopt0:amd64 libpq-dev libpq5 libprocps0:amd64 libproj-dev libproj0 libprotobuf-c0 libprotobuf-c0-dev libprotobuf7 libprotoc7 libproxy1:amd64 libpthread-stubs0:amd64 libpthread-stubs0-dev:amd64 libpython2.7 libquadmath0:amd64 librasterlite-dev:amd64 librasterlite1:amd64 libreadline5:amd64 libreadline6:amd64 libregexp-common-perl libroken18-heimdal:amd64 librrd4 librrds-perl librtmp-dev librtmp0:amd64 libruby1.8 libsasl2-2:amd64 libsasl2-modules:amd64 libselinux1:amd64 libserf1:amd64 libsigc++-2.0-0c2a:amd64 libsigc++-2.0-dev:amd64 libsigsegv2 libslang2:amd64 libsm-dev:amd64 libsm6:amd64 libsocket6-perl libsoup-gnome2.4-1:amd64 libsoup2.4-1:amd64 libspatialite-dev libspatialite3 libsqlite3-0:amd64 libsqlite3-dev libss2:amd64 libssl-dev libssl-doc libssl1.0.0:amd64 libstdc++6:amd64 libstdc++6-4.7-dev libstring-rewriteprefix-perl libsub-exporter-perl libsub-identify-perl libsub-install-perl libsub-name-perl libsvn1:amd64 libswitch-perl libtask-weaken-perl libtasn1-3:amd64 libtasn1-3-dev libterm-readkey-perl libtest-number-delta-perl libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl libthai-data libthai0:amd64 libtie-toobject-perl libtiff4:amd64 libtiff5:amd64 libtiff5-dev libtiffxx0c2:amd64 libtiffxx5:amd64 libtimedate-perl libtinfo5:amd64 libtool libtorque2 libtry-tiny-perl libtxc-dxtn-s2tc0:amd64 libudev0:amd64 libuniversal-require-perl liburi-perl libusb-0.1-4:amd64 libusb-1.0-0:amd64 libuuid1:amd64 libvariable-magic-perl libwhoopsie0 libwind0-heimdal:amd64 libwrap0:amd64 libwww-perl libwww-robotrules-perl libx11-6:amd64 libx11-data libx11-dev:amd64 libx11-doc libx11-xcb1:amd64 libxapian22 libxau-dev:amd64 libxau6:amd64 libxcb-glx0:amd64 libxcb-render0:amd64 libxcb-render0-dev:amd64 libxcb-shm0:amd64 libxcb-shm0-dev:amd64 libxcb1:amd64 libxcb1-dev:amd64 libxcomposite1:amd64 libxcursor1:amd64 libxdamage1:amd64 libxdmcp-dev:amd64 libxdmcp6:amd64 libxerces-c2-dev libxerces-c28 libxext6:amd64 libxfixes3:amd64 libxft2:amd64 libxi6:amd64 libxinerama1:amd64 libxml-libxml-lazybuilder-perl libxml-libxml-perl libxml-namespacesupport-perl libxml-parser-perl libxml-sax-base-perl libxml-sax-expat-perl libxml-sax-perl libxml2:amd64 libxml2-dev:amd64 libxmuu1:amd64 libxrandr2:amd64 libxrender-dev:amd64 libxrender1:amd64 libxslt1.1:amd64 libxxf86vm1:amd64 libyaml-perl libyaml-syck-perl linux-firmware linux-generic linux-headers-3.5.0-17 linux-headers-3.5.0-17-generic linux-headers-generic linux-image-3.5.0-17-generic linux-image-extra-3.5.0-17-generic linux-image-generic linux-libc-dev:amd64 locales lockfile-progs login logrotate lsb-base lsb-release lshw lsof ltrace lvm2 m4 make makedev man-db manpages manpages-dev mawk mc mc-data memtest86+ mime-support mlocate module-init-tools mount mountall mpi-default-dev mtr-tiny multiarch-support munin munin-common munin-doc munin-node munin-plugins-core munin-plugins-extra mysql-client-5.5 mysql-client-core-5.5 mysql-common mysql-server mysql-server-5.5 mysql-server-core-5.5 nano ncurses-base ncurses-bin ncurses-term net-tools netbase netcat-openbsd ntfs-3g ntpdate odbcinst odbcinst1debian2:amd64 openmpi-common openssh-client openssh-server openssl os-prober parted passwd patch pciutils perl perl-base perl-modules php5-cli php5-common php5-mysql pkg-config plymouth plymouth-theme-ubuntu-text policykit-1 popularity-contest postgis postgresql postgresql-9.1 postgresql-9.1-postgis postgresql-client postgresql-client-9.1 postgresql-client-common postgresql-common postgresql-contrib postgresql-contrib-9.1 postgresql-doc postgresql-doc-9.1 postgresql-server-dev-9.1 powermgmt-base ppp pppconfig pppoeconf procps proj-bin proj-data protobuf-c-compiler psmisc python python-apt python-apt-common python-cairo python-cairo-dbg python-cairo-dev python-cairosvg python-chardet python-dbg python-debian python-dev python-gdbm python-gnupginterface python-minimal python-newt python-openssl python-pam python-pkg-resources python-serial python-six python-twisted-bin python-twisted-core python-xapian python-zope.interface python2.7 python2.7-dbg python2.7-dev python2.7-minimal python3 python3-apport python3-apt python3-dbus python3-distupgrade python3-gdbm python3-gi python3-minimal python3-problem-report python3-update-manager python3.2 python3.2-minimal rasterlite-bin rasterlite-dbg readline-common resolvconf rrdtool rsync rsyslog screen sed sensible-utils sgml-base shared-mime-info ssh-import-id ssl-cert strace subversion sudo sysv-rc sysvinit-utils tar tasksel tasksel-data tcpd tcpdump telnet time tmux ttf-dejavu ttf-dejavu-core ttf-dejavu-extra tzdata ubuntu-keyring ubuntu-minimal ubuntu-release-upgrader-core ubuntu-standard ucf udev ufw unixodbc unixodbc-dev unzip update-manager-core update-notifier-common upstart ureadahead usbutils util-linux uuid-dev uuid-runtime vim vim-common vim-runtime vim-tiny w3m watershed wget whiptail whoopsie wireless-regdb wireless-tools wpasupplicant x11-common x11proto-core-dev x11proto-input-dev x11proto-kb-dev x11proto-render-dev xauth xkb-data xml-core xorg-sgml-doctools xtrans-dev xz-utils zlib1g:amd64 zlib1g-dev:amd64

4. Ребутимся
$ sudo reboot

5. Создаем пользователя и базу
$ sudo -u postgres -i
$ createuser osm
Shall the new role be a superuser? (y/n) y
$ createdb -E UTF8 -O osm gis
$ exit

6. Устанавливаем PostGIS на базу
$ sudo -u postgres -i
$ psql -f /usr/share/postgresql/9.1/contrib/postgis-1.5/postgis.sql -d gis
$ psql -d gis -c "ALTER TABLE geometry_columns OWNER TO osm; ALTER TABLE spatial_ref_sys OWNER TO osm;"
$ psql -d gis -c "ALTER USER osm WITH PASSWORD 'osm';"
$ exit

7. Устанавливаем osm2pgsql
$ mkdir ~/src
$ cd ~/src
$ git clone https://github.com/openstreetmap/osm2pgsql
$ cd osm2pgsql
$ ./autogen.sh
$ ./configure
$ make
$ sudo make install

8. Загружаем проекцию 900913 (Google, поперечная меркатора на сфере) в PostGIS
$ sudo -u postgres -i
$ psql -f /usr/local/share/osm2pgsql/900913.sql -d gis
$ exit

9. Скачиваем mapnik
$ cd ~/src
$ git clone git://github.com/mapnik/mapnik
$ cd mapnik
$ git branch 2.0 origin/2.0.x
$ git checkout 2.0

10. Собираем и инсталлируем mapnik
$ python scons/scons.py configure INPUT_PLUGINS=all OPTIMIZATION=3 SYSTEM_FONTS=/usr/share/fonts/truetype/
$ python scons/scons.py
$ sudo python scons/scons.py install
$ sudo ldconfig

11. Скачиваем mapnik-style
$ cd ~/src
$ svn co http://svn.openstreetmap.org/applications/rendering/mapnik mapnik-style
$ cd mapnik-style

12. Скачиваем границы
$ sudo ./get-coastlines.sh /usr/local/share

13. Генерируем xml
$ cd ~/src/mapnik-style
$ ./generate_xml.py --host localhost --user 'osm' --dbname gis --symbols ./symbols/ --world_boundaries /usr/local/share/world_boundaries/ --port 5432 --password 'osm'

15. Скачиваем, компилируем, инсталлируем mod_tile
$ cd ~/src
$ git clone git://github.com/openstreetmap/mod_tile.git
$ cd mod_tile

Последняя версия (на 2013-04-06) mod_tile собираться не захотела, ревизия c6b3c43460c0d9b427c91a264f2b334973b6760f собралась

$ git checkout c6b3c43460c0d9b427c91a264f2b334973b6760f

$ ./autogen.sh
$ ./configure
$ make
$ sudo make install
$ sudo make install-mod_tile
$ sudo ldconfig

16. Редактируем renderd.conf
$ sudo vi /usr/local/etc/renderd.conf

Меняем
socketname=/var/run/renderd/renderd.sock
plugins_dir=/usr/local/lib/mapnik/input
font_dir=/usr/share/fonts/truetype/ttf-dejavu
XML=/home/ИМЯ_ПОЛЬЗОВАТЕЛЯ/src/mapnik-style/osm.xml
HOST=localhost

За расположение тайлов отвечает tile_dir

17. Создание директорий

для хранения /var/run/renderd/renderd.sock
$ sudo mkdir /var/run/renderd
$ sudo chown USER_NAME /var/run/renderd

для хренения тайлов
$ sudo mkdir /var/lib/mod_tile
$ sudo chown USER_NAME /var/lib/mod_tile

18. Подключаем mod_tile к Apache
$ sudo vi /etc/apache2/conf.d/mod_tile

LoadModule tile_module /usr/lib/apache2/modules/mod_tile.so

19. Настраиваем renderd в Apache
$ sudo vi /etc/apache2/sites-available/default

Перед DocumentRoot вставить

LoadTileConfigFile /usr/local/etc/renderd.conf
ModTileRenderdSocketName /var/run/renderd/renderd.sock
# Timeout before giving up for a tile to be rendered
ModTileRequestTimeout 0
# Timeout before giving up for a tile to be rendered that is otherwise missing
ModTileMissingRequestTimeout 30

20. Скачиваем данные osm
$ cd ~/src
$ mkdir msk
$ cd msk
$ wget http://data.gis-lab.info/osm_dump/dump/latest/RU-MOW.osm.pbf

21. Настраиваем PostgreSQL для импорта

$ sudo vi /etc/postgresql/9.1/main/postgresql.conf

shared_buffers = 128MB
checkpoint_segments = 20
maintenance_work_mem = 256MB
autovacuum = off

$ sudo sysctl -w kernel.shmmax=268435456
$ sudo sysctl -p /etc/sysctl.conf
$ sudo service postgresql restart


22. Импортируем данные osm
$ sudo -u postgres -i
$ osm2pgsql -d gis --number-processes 16 --slim -C 12000 --cache-strategy dense /home/USER_NAME/src/msk/RU-MOW.osm.pbf
$ exit

23. Проверка
В одной сессии запускаем
$ sudo renderd -f -c /usr/local/etc/renderd.conf

В другой рестартим Apache
$ sudo /etc/init.d/apache2 restart

Смотрим отдается ли тайл
http://адрес/osm_tiles/0/0/0.png

24. Возвращаем первоначальные настройки PostgreSQL

25. Даем права пользователю www-data на папку /var/lib/mod_tile

26. Делаем автозапуск renderd
$ sudo cp  ~/src/mod_tile/debian/renderd.init /etc/init.d/renderd
$ sudo chmod u+x /etc/init.d/renderd
$ sudo vi /etc/init.d/renderd

Исправляем в этом скрипте
DAEMON=/usr/local/bin/$NAME
DAEMON_ARGS="-c /usr/local/etc/renderd.conf"

$ sudo ln -s /etc/init.d/renderd /etc/rc2.d/S20renderd


Возможные ошибки
1) [renderd] std::runtime_error: locale::facet::_S_create_c_locale name not valid
не хватает export LC_ALL="C"

Импорт planet-latest.osm.bz2 занял 6 дней на в виртуалке vmware с 8 ядрами и 40 Гб памяти. Все заняло на диске 400 Гб без учета кеша тайлов.  

понедельник, марта 04, 2013

Ссылки 2013-03

Визуализации
D3.js
http://bl.ocks.org/mbostock

Bootstrap Themes
Stilearn - Admin Template
https://wrapbootstrap.com/theme/stilearn-admin-template-WB0TFD2S0

jQuery plugins
jQuery Boilerplate
https://github.com/jquery-boilerplate/boilerplate

FireFox plugins
Quick Locale Switcher
https://addons.mozilla.org/ru/firefox/addon/quick-locale-switcher/?src=ss

Benchmarking
The results of benchmarking several web application development platforms and frameworks.
http://www.techempower.com/blog/2013/04/05/frameworks-round-2/

Scala

An asynchronous programming facility for Scala
https://github.com/scala/async


Scala+Hadoop
A Scala API for Cascading
https://github.com/twitter/scalding/

Scala+Netty
Scala port of the examples from Jboss Netty distribution
https://github.com/newca12/scala-netty-examples

A Scala web server powered by Netty networking and AKKA processing
http://sockoweb.org/
https://github.com/mashupbots/socko

пятница, февраля 15, 2013

Ссылки 2013-02

Play Framework 2.0
https://github.com/spray/twirl
The Play framework Scala template engine, stand-alone and packaged as an SBT plugin
Это вырезанный из PlayFramework2.0 шаблонизатор
ScalaTemplates. Можно использовать для статической генерации сайтов.

http://engineering.panaxiom.co.uk/post/34631917299/sublime-text-2-with-sbt-and-play-2
Sublime Text 2 with SBT and Play 2

https://github.com/guillaumebort/play2-sublimetext2
Sublime text 2 bundle for Play 2

https://github.com/sublimescala/sublime-ensime/issues/53#issuecomment-13519326
Конфигурация для remote debugging в Ensime + sublime text2

JavaScript
https://github.com/ded/qwery
a compact, blazing fast CSS selector engine, 6 kb

https://github.com/fat/bean
an events api for javascript, 10 kb

https://github.com/ded/bonzo
library agnostic, extensible DOM utility, 12 kb

PostgreSQL
http://www.slideshare.net/billkarwin/full-text-search-in-postgresql
Полнотекстовый поиск в postgresql

ZeroMQ
http://blog.tophernet.com/2011/08/zeromq-benchmarking-with-large-objects.html
Сколько тратится времени на protobuf-сериализацию 45 мб, отсылку с zeromq, получение, десериализацию? 168 мс!

AngularJS
https://github.com/pluk/angular-extras
ngStates sample

https://github.com/angular-ui/ui-router
UI-Router for Nested Routing

http://stackoverflow.com/questions/11972026/delaying-angularjs-route-change-until-model-loaded-to-prevent-flicker
Delaying AngularJS route change until model loaded to prevent flicker

https://github.com/vojtajina/WebApp-CodeLab
HTML5 Web App Code Lab


https://github.com/witoldsz/angular-http-auth
HTTP Auth Interceptor Module

воскресенье, января 20, 2013

Заметки pgsql

Генерация uuid
CREATE EXTENSION "uuid-ossp";
select uuid_generate_v1();

Время в тиках в integer
select cast(extract(epoch from current_timestamp) as integer);

Генерация тестовой строки

CREATE OR REPLACE FUNCTION random_string(lengh integer)
RETURNS varchar AS $$
  SELECT array_to_string(ARRAY(
          SELECT substr('abcdefghijklmnopqrstuv',trunc(random()*21+1)::int,1)    
             FROM generate_series(1,$1)),'')
$$ LANGUAGE sql VOLATILE;


select random_string(10);

Включение дебаггера
в postgresql.conf добавляем
shared_preload_libraries = '$libdir/plugin_debugger.dll'
в sql editor CREATE EXTENSION "pldbgapi";
появляется меню Debug по щелчку правой кнопки мыши на функции.

четверг, января 10, 2013

Мой список блогов