bash.im ithappens.me zadolba.li
4737

Метод кроссплатформенного копипаста

20 ноября 2010, 09:00

Вкривь и вкось, говорите? Что ж, поскольку с P-CAD дружу я давно, но в меру необходимости, расскажу ещё одну историю.

Периодически приходится делать что-нибудь ну очень мелкосерийное — скажем, штук двадцать каких-нибудь плат. Заказывать производство — дороговато и долго, поэтому обычно выручает метод лазерного утюга. Так было до того самого момента,пока не оказался в моём распоряжении нехилый такой забугорный фрезер с ЧПУ. Почитывая толстую книжку мануалов и изучая возможности буржуинской техники, я мог делать на станке всё, что душе угодно. Примерно в то же время мне как раз нужно было «откатать» небольшую платку, так почему бы не попробовать в этом деле канадскую машинку? Точности у станка хватает, файлы в P-CAD готовы — за чем же дело стало?

А стало оно всерьёз и надолго. Постпроцессор станка воспринимал только три вида файлов: *.plt, *.dxf и свой собственный формат, который простому текстовому редактированию не поддавался. Было решено *.pcd во что-нибудь преобразовать. Поскольку напрямую совместимых форматов обнаружено не было, я решил искать посредника. Путь к *.dxf отпал почти сразу по причине отсутствия опыта работы с AutoCAD, и после нескольких безуспешных попыток я запустил Corel. Хотя промежуточные форматы в списках импорта-экспорта программ нашлись, счастья всё равно не было: то разбегался масштаб, то слипались слои, то дорожки рассыпались в растр... Убив почти день, исступлённо сидя перед монитором с открытыми окнами P-CAD и Corel, я сделал жест отчаяния: тупо скопировал фрагмент платы и на пустом месте в Кореле кликнул «вставить».

Результат превзошёл все ожидания: в Кореле образовалась замечательная копия фрагмента. Более того, при внимательном изучении она оказалась состоящей из правильных замкнутых кривых, которые оставалось только местами объединить. Даже цвет слоёв передался просто замечательно, в отличие от предыдущих попыток. Размеры совпали идеально. Дальше было дело техники: немного обработать рисунок и экспортировать в *.plt.

С тех пор, когда нужно спроектировать к готовой плате корпус или просто нужен векторный рисунок печатки, в ход идёт метод кроссплатформенного копипаста.

4736

Два раза проверь, один отрежь

19 ноября 2010, 16:45

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

Если ФлагЗаписи = 1 Тогда
[...]
// На всякий случай...
Если ФлагЗаписи = 1 Тогда
[...]
КонецЕсли;
КонецЕсли;

Коллеги, работайте на свежую голову.

4735

Китайский паровозик

19 ноября 2010, 16:45

Продаю внешний USB-модем через форум. В личку приходит вопрос:

Типо этот модем например вставишь в передний юзби порт а в этот модем уже можно будет вставлять и мышки и клавы да?)

Вот честно: не знаю, что ответить, чтобы обошлось без пошлости и не обидело человека.

4734

Значит, оквадратьте

19 ноября 2010, 16:45

Работаю разработчиком программного обеспечения для учёта количества и качества нефти. Есть достаточно частая проблема понимания одного простого факта: в документе «Журнал регистрации показаний СИКН» все количества необходимо выводить с точностью до тонн, но учитываются они в приборах с точностью до килограммов. Соответственно, плавающую часть числа нужно или округлять, или отбрасывать — на усмотрение клиента.

В первую смену добыто 2,6 тонны, во вторую — тоже 2,6. Журнал заполняется методом отсечения остатка и выглядит так:

Первая смена: 2 т
Вторая смена: 2 т
Итог: 5 т

— У вас всё считается неправильно! — орёт клиент.
— Что именно?
— Итог по суткам неправильный! Ты неграмотный, что ли? 2 + 2 = 4! Поставь округление!
— Хорошо, допустим, у нас округление, тогда будет так:

Первая смена: 3 т
Вторая смена: 3 т
Итог: 5 т

Клиент задумывается на минуту.

— Ты мне тут голову не морочь! Мы платим вам, чтобы всё нормально было!

4733

Изящная градиентная подсветка

Работал админом-верстальщиком-эникейщиком. В очередной раз обновляю сайт фирмы. На странице по просьбе девочки-менеджера нужно было разместить два одинаковых баннера: один у верхнего края окна браузера, второй — у нижнего.

Звонит менеджер и начинает орать, что верхний баннер темнее нижнего. Проверяю адреса картинок, делаю скриншот и тыкаю пипеткой в фотошопе — баннеры идентичны. Менеджер не успокаивается. Коллеги советуют сделать верхний баннер чуть светлее, чтобы менеджер перестала кричать. Дело, конечно, было в копеечных LCD-мониторах — но разве это объяснишь разъярённой девушке?

4732

Коммунихакер

19 ноября 2010, 12:45

Как-то решил перекинуть фотографии с коммуникатора на компьютер. Подключил, лазаю по папкам. Пока шло копирование пары сотен мегабайт, я решил заварить чайку. Прихожу — и сердце замирает! QIP предательски сообщает: «Учётная запись используется на другом компьютере». Не так было жаль далеко не кривой шестизнак, как контакт-лист. Вмиг прокляв все защиты седьмых «форточек» и антивирус, вечно недовольный старыми базами, я полез искать зловреда.

Зловред был совсем рядом: он мирно отдавал фотографии на комп и, зацепившись за ActiveSync, получил порцию интернета от компьютера, тем самым разбудив свёрнутую в фоне мобильную аську, которая и вышибла QIP.

4731

Электронный Шумахер

В досовские времена был один весьма популярный расширитель защищенного режима. Для поколения «Пепси» объясню: нужен он был для того, чтобы из ДОС с её 640 килобайтами запускать программы, которым нужны мегабайты памяти. Стал выпадать расширитель на нашей программе в осадок с переполнением стека, и пришлось мне посидеть недельку в отладчике, выясняя причину. А когда выяснил — выпал в осадок сам.

Итак, количество описателей сегментов памяти ограничено. У каждого описателя сегмента есть флаг, занят ли этот кусок памяти. Как найти свободный сегмент? Эти гении соорудили из сегментов закольцованный список и устроили рекурсивный обход. Если не было ни одного свободного куска памяти, программа нарезала круги по кольцевому списку, пока не кончался стек. Радует одно: если бы программеры были умнее, программа крутилась бы в этом списке вечно этаким электронным Шумахером.

Кто угадает фирму? Остальным после паузы сообщу: Borland и её rtm.exe.

4730

Триодиннадцатый нерабочий труп

19 ноября 2010, 11:00

Нередко приходится при работе «компьютерным слесарем» объяснять методы решения задачи из трёх-четырёх кликов, заметно улучшаюшие результат и упрощающие жизнь, если их понимать. Главная проблема — патологическая боязнь всего нового отдельно взятыми гражданами. Так как я, помимо прочего, приятный собеседник, работаю честно и беру недорого, смог себе позволить финт ушами.

На флешку установлен эмулятор DOS, программы под него, пара игр, Нортон и Windows 3.1 (не прописаны в autoexec.bat, но в PATH присутствуют). После фразы «как всё сложно» со словами «а так все работали четверть века назад» запускаю эмуль и начинаю виртуозно вбивать команды. Если взаимопонимание не достигается, запускаю Нортон с телегой про «20 лет назад». Для тех, кто только в этом веке компьютер увидел, процесс повторяется на отметке «15 лет назад» запуском «форточек».

Одно крайне обеспеченное родичами дарование спросило, насколько отстойные игры тогда были. Показал. Третью неделю оторваться не может.

Честно признаюсь, что сам я с компом начал общаться в 1996 году в 11 лет. Дело было в бывшем Доме Пионеров, и техника могла тянуть только «триодиннадцатый нерабочий труп». Низкий поклон правильным преподавателям, запретившим в игровое время пользоваться Нортоном и виндой после урока про команды DOS!

4729

Зеркало для самоубийцы

19 ноября 2010, 09:00

Первая работа по специальности. На третий день падает сервак. Снимаю образ раздела, форматирую, ставлю систему, пытаясь не накосячить: первый раз в жизни дело имею с сервером. Естественно, ничего толком не выходит; уже утро близится, надо сервер возвращать хоть в сколь-нибудь рабочее состояние. Заливаю образ обратно — ошибки одна за одной, в конце восстановления — неудача. Лезу в потроха сервера.

Я, конечно, понимаю, аппаратный RAID 0, все дела, скорость важна. Но из трёх дисков разных производителей и объёма — это перебор. Но это полбеды. Ну на фига было это издевательство над дисками затем разбивать на две равных раздела и делать программный RAID 1?!