← All posts tagged programming

anton0xf
dev habr HR задачки programming Чувак на хабре жалуется, что ему дали на собеседовании трудную задачу и заставили её писать в блокноте, и он не смог в итоге её решить за полчаса.
Из его претензий я согласен только с тем, что невозможность запускать свой код в процессе — это отстой. А вот не знать, что такое поиск в ширину, это уже явный фейл. К тому же его окончательное решение, полученное, как я понял, через пару дней, какое-то излишне многословное.
Я вот решил эту задачку, не смотря на его "решения", за 15 минут. Из них 5 ушло на заполнение дерева и минимальную визуализацию, 8 на написание функции, решающей задачу, и 2 на запуск и исправление единственной ошибки (в процессе написания я решил переименовать одну из локальных переменных, и не везде поменял её название).

Не думаю, что я особенно умный, или что быстро решил задачу (меня от части оправдывает только то, что я js практически не умею). Но, судя по голосованию внизу статьи, большинство читателей согласны с тем, что это либо слишком сложная задача (и на практике такие задачи не встречаются), либо не проверяющая сообразительность кандидата. И вот это, имхо, уже бред.
anton0xf
dev ? Android programming Посоветуйте годный текстовый редактор с подсветкой синтаксиса (чем больше поддерживает языков — тем лучше, но сейчас нужен Octave/Matlab) под первотег
anton0xf
fail JavaScript программирование programming Решил заюзать либу moment-range.
Запустил тесты, они фейлятся:
DateRange #diff() should use momentjs' diff method:
AssertionError: expected 7948800000 to equal 7945200000
(разница в 1 час)

пошел смотреть в код, а там:
(CoffeeScript)
d_1 = new Date 2011, 2, 5
d_2 = new Date 2011, 5, 5
dr = moment.range(d_1, d_2)
dr.diff().should.equal 7945200000
локальная таймзона! а 27 марта 2011 мы последний раз переводили часы)
anton0xf
math dev work ? programming есть датчик, выдает вещественные значения. выдает он их часто и значения меняются (как правило) мало, но собирается их много. изредка происходят (услоно мгновенные) скачки, после которых все тоже довольно гладко (в пределах погрешности измерения и всяких шумов).
anton0xf
DBMS programming Unix в The Art of Unix Programming есть линк на статю
/The UNIX Shell As a Fourth Generation Language/. весьма занимательно и даже вполне актуально. правда надо бы в тексте сделать замену s/ASCII/UTF-8/.
в статье описывается как можно, используя небольшой набор утилит, создать реляционную базу данных с достаточно высокоуровневым языком запросов (shell). причем, легко расширяемую, и позволяющую использовать при работе все стандартные (и не очень) утилиты unix и ее возможности (общем, unix-way во все поля).
для примеров использована существующая rdbms /rdb. написана она большей частью на перле. и, похоже, давно и надежно мертва, и исходников нет. зато есть более живой наследник со смешным названием /NoSQL/. тут уже сть исходники (последние аж от 2010-го года), хотя svn не работает, и поставить это с полпинка не удалось. но посмотреть будет интересно.
anton0xf
quote cps c.j.r Lisp programming asvil> ок, я возле холодильника хочу бутер. я нажал кнопку. затем я достал ингридиенты, сделал бутер, опять нажал кнопку, и вот я вновь возле холодильника, хочу бутер, но он уже готов.
asvil> зачем я должен так жить с продолжениями.
asvil> ?
asvil> ага лексическое состояние "хочу бутер" сохраняется между нажатиями кнопки.
Okasu> asvil_: потому что ты индиана джонс и тебе надо вынести статуетку из пещеры, которая обрушится если статуетку взять
Okasu> созраняешься, берёшь, загружаешься
Okasu> пещера обрушена, а статуетка у тебя и ты живой и в шляпе
anton0xf
darcs ? dvcs programming а в чем профиты от этой их теории патчей и вообще?
линки на статьи приветствуются)
// говоря dvcs, подразумеваю в первую очередь git, как самый привычный и изученный
anton0xf
Git WTF programming алсо, оказывается (если я конечно правильно понял), что git принципиально не умеет (и никакими git mv ему не поможешь) отслеживать историю файла, если он одновременно (за один коммит) перемещался и редактировался.
причем, учитывая что есть еще rebase squash, такой коммит можно и случайно получить.
anton0xf
Git ? submodule programming хочу выделить часть проекта в submodule.
для этого сначала собираю все что нужно в одну директорию, а потом пробую 'git filter-branch --tree-filter' или 'git subtree split'.
и обнаруживаю, что проебана вся история до перемещения((
и что делоц?

вот, например, кто-то спрашивает об этом на stackoverflow.com:

должно быть можно для каждого файла создать его в целевой папке с нуля и применить все комиты, как если бы он тут и лежал. но как это делать хотябы для одного файла — яхз
anton0xf
Git code vcs ? programming
нужно, для работы над веткой, сделать некоторое изменение, которое потом, при мердже в основную ветку, надо отменить. при этом желательно иметь вожможность его вернуть, при вовращении к работе над веткой. как это лучше сделать?
пока не придумал ничкго лучше, чем держать патч с этим изменением и применять его при переходе к работе с веткой, но не комитить его. недостаток: при переходе к другим веткам это изменение придется reset'ать, а при возврящении снова накатывать. и сам патч придется где-то отдельно хранить.
можно еще сделать такой комит в начале ветки и отменить его перед мерджем или после него. проблема: лишний мусор в истории.
anton0xf
Git code rebase work programming
чета я многовато времени трачу на "причесывание" коммитов.

алсо, как лучше делать такое?:
A - B - C <- master
 \
  D - E <- foo
       \
        F - G <- bar
==>
A - B - C <- master
         \
          D - E <- foo
	           \
		        F - G <- bar

$ git checkout foo
$ git rebase master
$ git checkout bar
$ git rebase foo
работает, но как-то это не очень..
тем более, что если от D будет идти больше ветвей, то это еще и
муторно
anton0xf
quiz math programming в очень длинном тексте требуется заменить все буквы "a" на буквы "b", а все "b" — на "a", используя текстовый редактор, который позволяет заменить все вхождения одного произвольного набора символов на другой. Например, замена "bb"->"aCbb" переведёт строку "bbbbbD" в "aCbbaCbbbD". Как ему выполнить задачу с минимальным числом последовательных замен?