Tools
Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.
2014-01-31
ArcMap – Hadoop
Posted by Valentin at 12:30 0 comments
2014-01-30
Проблема демократии
Posted by Valentin at 12:30 0 comments
Labels: gov.ru
2014-01-29
Package
mkdir ~/projects/translit.bot; pushd ~/projects/translit.bot
virtualenv --no-site-packages env source env/bin/activate
CHANGELOG COPYING README.rst
mkdir translitbot
translitbot/__init__.py
translitbot/__main__.py
python -m translitbot
#!/usr/bin/env python # -*- mode: python; coding: utf-8 -*- from translitbot.translit_xmpp_bot import main main()
Posted by Valentin at 12:30 0 comments
Labels: python
2014-01-28
Норматив
fgz = cStringIO.StringIO() with gzip.GzipFile(filename=FILENAME, mode='wb', fileobj=fgz) as gzip_obj: gzip_obj.write(STUFF_TO_GZIP) filesize = pycurl_simulator(fgz) print filesize
Posted by Valentin at 12:30 0 comments
Labels: python
2014-01-27
Hangouts
Posted by Valentin at 12:30 0 comments
Labels: im
2014-01-24
Интригующий заголовок
Posted by Valentin at 12:30 0 comments
Labels: citation
2014-01-23
Crunch
final PTable<Long, Long> counts = pipeline. readTextFile(args[0]). parallelDo(new PointInPolygon(), Writables.longs()). count();
Posted by Valentin at 12:30 0 comments
2014-01-22
backup
[repozo] recipe = zc.recipe.egg eggs = ZODB3 scripts = repozo
- bin/backup makes an incremental backup.
- bin/fullbackup always makes a full backup.
- bin/restore restores the latest backup.
- bin/snapshotbackup makes a full backup, separate from the regular backups. Handy for copying the current production database to your laptop or right before a big change in the site.
Posted by Valentin at 12:30 0 comments
Labels: Zope(Plone)
2014-01-21
Числа
Если кто плохо (как я) считает в уме, то возьмите калькулятор:
Posted by Valentin at 12:30 0 comments
2014-01-20
Total Trainer
original post http://vasnake.blogspot.com/2014/01/total-trainer.html
Posted by Valentin at 12:30 0 comments
Labels: video
2014-01-17
One reason why law in Russia is incoherent
Это Ян Митчел вот об этом пассаже:
Posted by Valentin at 12:30 0 comments
Labels: language
2014-01-16
За свободу надо бороться
На всякий случай я ролик скопипиздил http://youtu.be/szhB4hj91mQ
Posted by Valentin at 12:30 0 comments
Labels: gov.ru
2014-01-15
Коллбеки императивны
Posted by Valentin at 12:30 0 comments
Labels: JS, programming
2014-01-14
Побочные эффекты
# CREATE TABLE foo (id SERIAL NOT NULL PRIMARY KEY, value INTEGER NOT NULL); # INSERT INTO foo (value) SELECT i FROM generate_series(1, 1000000) i; # \timing # SELECT * FROM foo WHERE value = 1; Time: 124.278 ms # \! sudo sync # \! echo 3 | sudo tee -a /proc/sys/vm/drop_caches # SELECT * FROM foo WHERE value = 1; Time: 265.871 ms
Posted by Valentin at 12:30 0 comments
Labels: SQL
2014-01-13
Агрессор
Posted by Valentin at 12:30 0 comments
Labels: бытовуха
2014-01-10
О космонавтике
Планета
|
Радиус, млн. км
|
---|---|
Меркурий
|
0,11
|
Венера
|
0,62
|
Земля
|
0,93
|
Марс
|
0,58
|
Юпитер
|
48,5
|
Сатурн
|
54,4
|
Уран
|
52,0
|
Нептун
|
87,5
|
Высота, км
|
Параболическая
скорость, км/сек
|
---|---|
0
|
11,19
|
500
|
10,77
|
1000
|
10,40
|
2000
|
9,76
|
5000
|
8,37
|
10000
|
6,98
|
Планета
|
Параболическая
скорость, км/сек
|
---|---|
Меркурий
|
4,15
|
Венера
|
10,25
|
Земля
|
11,19
|
Луна
|
2,36
|
Марс
|
5,09
|
Юпитер
|
60,2
|
Сатурн
|
36,2
|
Уран
|
21,4
|
Нептун
|
23,4
|
Posted by Valentin at 12:30 0 comments
Labels: Book
2014-01-09
Пошлина
Posted by Valentin at 12:30 0 comments
Labels: gov.ru
2014-01-08
CoffeeScript
npm install -g coffee-script
set wd=%~dp0 pushd "%wd%" coffee -w -c -o c:\mapedit\javascript\vs\obj\ c:\mapedit\javascript\vs\
require("vs/meapp"], function(meapp) { try {vsapp.log('try vsapp');} catch(ex) {vsapp = new meapp();} vsapp.log(" vsapp ready");
require(["vs/obj/meapp"], function(meapp) { try {vsapp.log('try vsapp');} catch(ex) {vsapp = new meapp();} vsapp.log(" vsapp ready");
Ниже тройной гист с кодом:
Posted by Valentin at 12:30 0 comments
Labels: JS
2014-01-07
Semantic MediaWiki
Form:Сотрудник
и в первом приближении выглядит так:<noinclude>Этот текст будет показан при просмотре страницы.
Обычно он содержит описание формы.
Само определение формы находится внутри тега includeonly.</noinclude>
<includeonly>
{{{for template|Сотрудник}}}
Должность: {{{field|Должность}}}
Отдел: {{{field|Отдел}}}
{{{end template}}}
</includeonly>
Введите Фамилию Имя Отчество сотрудника чтобы создать или редактировать его страницу:
{{#forminput:form=Сотрудник}}
Результатом будет поле ввода названия новой/редактируемой страницы и кнопка:
Как и ожидается, по нажатию на кнопку откроется страница с формой:
[[Отдел::особый]]
В нашем шаблоне Должность и Отдел — естественные кандидаты на роль свойств. Зафиксируем это в шаблоне:
Должность: [[Должность::{{{Должность}}}]]
Отдел: [[Отдел::{{{Отдел}}}]]
[[Category:Сотрудник]]
Визуально практически ничего не изменилось — вместо определения свойства выводится его значение, то есть значение параметра шаблона
{{#ask: [[Category:Сотрудник]]
|?Должность
|?Отдел
|format=table}}
Сначала пара слов для общего понимания синтаксиса:
{{#f: ... }}
— это
вызов функции с именем f. Функции
определяются в расширениях, я не пробовал
определять их. Вертикальные палки
разделяют параметры функции. То есть,
мы имеем вызов функции ask с четырьмя
параметрами.Этот запрос состоит их двух частей. Первая часть (первый параметр функции ask) выбирает страницы, удовлетворяющие определённому правилу. В данном случае — принадлежащие категории
Сотрудник
. Вторая часть
(остальные параметры) определяет способ
вывода результатов. В данном случае это
будет таблица с тремя столбцами:- Имя страницы. Столбец выводится по умолчанию, но это можно подавить при необходимости параметром
mainlabel=-
. - Должность. Этот уже мы задали.
- Отдел. И этот тоже мы.
Posted by Valentin at 12:30 0 comments
Labels: DBMS
2014-01-06
Евангелист
// destroy grid // освободить хандлеры событий if(featureEditor.dgridRowClickListener != null) featureEditor.dgridRowClickListener.remove(); if(featureEditor.dgridCellDblClickListener != null) featureEditor.dgridCellDblClickListener.remove(); featureEditor.dgridRowClickListener = null; featureEditor.dgridCellDblClickListener = null; // грохнуть грид. Пичалька, но тут пропадает DOM элемент, поэтому приходится его пересоздавать if(featureEditor.grid) { featureEditor.loadingIcon.destroy(); featureEditor.grid.revert(); featureEditor.grid.destroy(); featureEditor.grid = null; dojo.place('<div id="grid" class="grid1"></div>', 'grid-legend-parent', 'before'); } ... // когда надо, создаем грид featureEditor.store = new Memory({ data: [], idProperty: fields[0].field // OBJECTID probably }); // Dojo's dGrid var DataGrid = declare([OnDemandGrid, Selection, CellSelection, Keyboard]); featureEditor.grid = new DataGrid({ store: featureEditor.store, columns: fields, selectionMode: 'single' /*, noDataMessage:'Nothing found.' */ }, 'grid'); featureEditor.grid.startup(); featureEditor.utils._setListeners(); ... // и когда надо, обновляем данные в гриде featureEditor.grid.set("store", featureEditor.store); featureEditor.grid.refresh(); |
Posted by Valentin at 12:30 0 comments