dil: (Default)
Monday, October 8th, 2018 10:40 am

а остров в Индонезии, где активно растят кофе.

Так теперь есть не только JavaScript, а и CoffeeScript, который не совсем самостоятельный язык, а как раз компилируется в JavaScript..

Оригинал этой записи в личном блоге.

dil: (Default)
Monday, July 9th, 2018 06:52 pm

Обнаружилось, что в питоне стандартно поддерживаются не только обычные числа, но и комплексные. Я раньше об этом совершенно не знал. Только в качестве суффикса мнимой части вместо обычного i (означающего квадратный корень от -1) используется j или J:

$ python
Python 2.7.13 (default, Nov 24 2017, 17:33:09) 
>>> a=1+2j
>>> b=3+5J
>>> a
(1+2j)
>>> b
(3+5j)
>>> a+b
(4+7j)
>>> a*2
(2+4j)
>>> a*b
(-7+11j)
>>> a/b
(0.3823529411764706+0.029411764705882346j)

Оригинал этой записи в личном блоге.

dil: (Default)
Wednesday, March 28th, 2018 02:46 pm

На входе: строчка из n букв (в основном, русских), например: “абук”, и дополнительное число m, например, 3.
Задача: сгенерировать из букв той строки ВСЕ возможные комбинации длиной m.

Количество этих комбинаций может быть достаточно велико: на первом месте одна из n букв, потом на втором одна из остальных n-1, потом одна из остальных n-2, и т.д.
Всего получается n!/(n-m)! . В вышеуказанном примере – 24 варианта, а если, например, 10 букв, из которых надо сгенерировать 5-буквенные комбинации, то их будет уже 30240.

Read the rest of this entry » )

Оригинал этой записи в личном блоге.

dil: (Default)
Thursday, September 28th, 2017 03:22 pm

Предыдущая пара постов в DW и ЖЖ не имеет ссылок на мой собственный блог, потому что он не смог кросспостить их в DW, и пришлось скопировать руками.

В вордпрессе стала вылезать идиотская ошибка: Something went wrong - -32300 : transport error - HTTP status code was not 200
Видать, что-то поменялось в DW’шном API, но, блин, хотя бы полученный по HTTP код ответа можно было показать, а не просто рассказывать, что он не 200 :(

Похоже, пора переходить на свой блоговый движок. Хотя я его ещё не полностью дописал, но кросспостинг там уже вполне работает, и ошибку там удалось увидеть гораздо яснее: код 307 – пересылка с http://www.dreamwidth.org/interface/xmlrpc на https: . Поменял в настройках DW’шного урла http на https, всё заработало.

dmarck, похоже, ты прав, нынче все переезжают с http на https. Но в том же ЖЖ это только на веб-сайтах приделали, а API там продолжает работать по http.

Попробовал в вордпрессовском плагине livejournal-crossposter-remake так же поменять урл, но нифига не помогло: Something went wrong - -32300 : transport error: http_request_failed Couldn't resolve host 'https'
Пришлось копаться в коде, оказалось, что там используется IXR_Client из этого самого вордпресса, который https не умеет в принципе. Вот щас поменял IXR_Client на WP_HTTP_IXR_CLIENT, посмотрю, поможет ли.

Но нафиг нужен такой похапешный софт, который не понимает явно указанный в урле протокол.. Выходит, это тот самый случай, когда проще самому написать, чем копаться в чужом коде. Только там ещё некоторые другие вещи дописать надо.

А в этом livejournal-crossposter-remake ещё и коты нашлись..

Read the rest of this entry » )

Оригинал этой записи в личном блоге.

dil: (Default)
Wednesday, April 19th, 2017 09:22 am

Часто бывает трудно выдумать не совпадающие с ранее использованными, но при этом легко запоминаемые названия для переменных в программе, для новых проектов, баз данных, доменов, и т.п.
Можно зайти на этот сайт, он такие названия генерирует..

Оригинал этой записи в личном блоге.

dil: (Default)
Monday, April 17th, 2017 01:43 pm

Сегодня ночью опять долго и глубоко спал, показали очередные сюжеты из альтернативного мира:

1. На работе начальник ушёл в отпуск, и некоторым сотрудникам выдал срочные задания.
Мне выдал очень необычное: написать программу, в которой можно было бы выбрать некоторые приготавливаемые пищевые продукты, указать количество потребителей, а программа бы посчитала нужное количество исходных компонентов и выдала последовательности процессов приготовления с указанием затрачиваемого времени. Причём если продуктов выбрано несколько, то процессы приготовления должны комбинироваться – то есть, пока что-то варится/жарится, было бы указано на другой компонент, который можно заготовить за это время.

Read the rest of this entry » )

Оригинал этой записи в личном блоге.

dil: (Default)
Friday, February 3rd, 2017 02:01 pm

Один из разработчиков сегодня пожаловался, что у него есть два скрипта, цепляющихся по API к одному и тому же серверу, так один работает, а второй вообще соединиться не может. Разница в функциях: в одном используется fsockopen, а в другом socket_connect.
Причём когда он их цепляет не к тому серверу, а к своему тестовому (на его же ноутбуке в докер-контейнере), то оба нормально работают. Вот и решил у меня поинтересоваться, нет ли каких проблем в сетевых соединениях к серверу, или каких затыков в файрволах..

Хотя вроде бы кажется, что если один скрипт успешно подключается, значит, проблем в сети нет. Но.. случаи же разные бывают. Может, где-то есть ограничение на количество соединений с одного клиентского адреса, или у самого сервера ограниченное количество соединений, или ещё что.. Так что первым делом я попросил его посоединяться туда telnet’ом. Он попробовал, нормально получается.

Значит, что-то не так в самом скрипте. Попросил показать мне кусок кода, который осуществляет это соединение. А там вместо двух строчек (создать сокет и подцепить его к серверу socket_connect‘ом) внезапно оказалсь целая страница.. И не просто функция, а целый класс, который умеет соединяться и по IPv4, и по IPv6, и после запуска соединения несколько секунд в цикле проверяет ошибки сокета, пока не убедится, что соединение нормально установилось, или пока счётчик не кончится. И если не получилось, будет попробовать следующий сервер, если их в списке больше одного.

Оказалось, что это он не сам написал, а скачал из интернетов готовую реализацию того API, стал её проверять, а вот она с сервером не соединяется.

Ну я этот кусок кода скопировал, выкинул оттуда все внутриклассовые ссылки, вписал параметры конкретного сервера, запустил – и он нормально соединился. И тут… разработчик сообщил, что у него тоже заработало!
Что, эффект присутствия?! Ну, в каком-то смысле да. Ибо, когда я попросил прислать этот кусок кода, он его не просто прислал, а ещё и сам почитал, и нашёл, в чем была засада.

Мораль: показывая кому-то программу, а особенно, рассказывая, как она работает, сам гораздо лучше начинаешь это понимать. Заодно и ошибки можешь найти и исправить. Ну и кто уже догадался, что было не так в этой программе??

Read the rest of this entry » )

Оригинал этой записи в личном блоге.

dil: (Default)
Thursday, August 18th, 2016 01:55 pm

Придуман был в 2009 году, называется CoffeeScript.
Язык компилируемый, но не в исполняемый код, а в JavaScript, который потом подсовывается в обычный джаваскриптовый интерпретатор.

Авторы считают, что их язык проще, потому писать на нём удобнее, а скомпилированный из него JS читабельнее и работает быстрее, чем написанный вручную. Но я в этом смысла не вижу, ибо хороший программист на любом языке может писать нормально, а плохой на любом же может написать кривую фигню.

Оригинал этой записи в личном блоге.

dil: (Default)
Tuesday, June 21st, 2016 09:19 pm

Это такая система для аналитических запросов к гигантским базам данных, обновляемым в реальном времени. Изначально разрабатывалась для работы с Яндекс.Метрикой.
Брать тут, статья на хабре: https://m.habr.com/en/company/yandex/blog/303282/

P.S. Посмотрев на первую ссылку, я внезапно узнал, что у Яндекса уже почти два года как есть собственный домен первого уровня: yandex. У гугла, кстати, тоже: google. Это такая новая мода?

Оригинал этой записи в личном блоге.

dil: (Default)
Sunday, March 6th, 2016 10:55 pm

- У моего сына сегодня день рождения.
– И сколько ему исполняется?
– 1024 дня.

Сын приходит из школы.
Отец:
– Ну, как диктант?
– Да так, всего две ошибки… Но в общем, скомпилировался!

– Пап, а что, в каменном веке всё было из камня?
– Да, сынок.
– И даже компьютеры?

Read the rest of this entry » )

Оригинал этой записи в личном блоге.

dil: (Default)
Sunday, October 25th, 2015 03:17 am

Для тех, кто не в курсе: кобол – это один из самых древних языков программирования, разработанный ещё в 1959 году. С тех пор на нём было написано множество программ, некоторые из которых используются до сих пор, в основном финансовыми учреждениями..

Оригинал этой записи в личном блоге.

dil: (Default)
Friday, September 18th, 2015 08:09 pm

Странно, что xml-программистов ещё не ищут..

Для тех, кто в танке: SQL (Structured Query Language) — это язык запросов. А XML и HTML — языки разметки. Они все языки, но прямого отношения к программированию не имеют. На них самих никакие программы написать невозможно, не предназначены они для этого.
Хотя многие реализации SQL-серверов поддерживают хранимые процедуры, но ни их создание, ни вызовы, ни языки, на котором эти процедуры пишутся, не стандартизованы в SQL, и если речь идёт о них, то стОит уточнить, о какой именно разновидности идёт речь.

Оригинал этой записи в личном блоге.

dil: (Default)
Thursday, September 3rd, 2015 03:07 pm

Когда не хочется заморачиваться загрузкой файла, ибо на серверной стороне из него нужна одна строчка, и вдобавок пользователь может захотеть эту строчку вписать копипастой, потому что у него в локальных файлах её вообще нет, она где-нибудь на другой машине хранится..
Конкретный пример – загрузка публичного ключа от ssh.

Делаем так: в основной форме для этой строчки используем обычный input типа text, который можно заполнить руками. А чтобы прочитать в него строчку из файлика, встраиваем рядышком (или даже прямо внутрь основной формы) дополнительную форму с input типа file и обработчиком на JS, который читает файлик сразу после его выбора в браузере и засовывает нужный контент в поле основной формы:

Read the rest of this entry » )

Оригинал этой записи в личном блоге.

dil: (Default)
Friday, July 17th, 2015 08:15 pm

Вы ранее привлекались за хранение данных в глобальных переменных?

В своём резюме вы указали знание php. вам не стыдно?

Перед вами кисть, холст и мольберт. Напишите компилятор.

Вы моете руки перед правкой кода на продакшне?

Вас раньше обвиняли в попытках программирования?

Каким вы видите свой код через пять лет?

Как вы относитесь к легализации курения мануалов?

Остальное тут: https://pastebin.com/Uq5B2f2V

Оригинал этой записи в личном блоге.

dil: (Default)
Saturday, August 16th, 2014 12:17 pm

В одной базе данных есть две таблицы, связанные отношением 1:M. Скажем, в одной лежат посты из блога, а в другой комментарии, привязанные к постам по id.
Задача: перетащить их все в другую базу, в которой идентификаторы у постов изменятся (потому что там уже есть другие посты с теми же id, что в первой базе), но при этом сохранить привязку к ним комментариев.

С постами понятно, SELECT из первой базы и INSERT во вторую.

А вот как быть с комментариями?
Мне пока пришли в голову три идеи, но все неэффективные.

1) Для каждого поста сразу после помещения его во вторую базу, когда уже известны и старый, и новый id, найти в первой базе все комментарии по старому id и сложить их во вторую базу с новым id. Но это отдельный SQL-запрос на каждый пост, а их там дофига.

2) Сначала перенести все посты, попутно составляя табличку со старыми и новыми id, а потом переносить комментарии, заменяя id постов по этой табличке. Но если табличку держать в памяти, она получится очень нефигового размера. А в базах её создавать нельзя, правов не хватает.

3) Извлечь вместе с постами сразу все их комментарии путём LEFT OUTER JOIN. Но тогда каждый пост извлечётся целиком много раз, с каждым своим комментарием, это дикий перерасход памяти в SQL-сервере.

Как бы это сделать поэффективнее?

Оригинал этой записи в личном блоге.

dil: (Default)
Saturday, December 7th, 2013 01:38 pm

“<rexim> Утилита rm при указании флага -r (от слова refactor) начинает выполнять эффективный рефакторинг.”

Тоже отсюда: http://ibash.org.ru/quote.php?id=16155

Оригинал этой записи в личном блоге.