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









