All streams
Search
Write a publication
Pull to refresh
20
0.5
Михаил Берг @NightFlight

Управление разработкой софта

Send message
Вы знаете, я когда читаю такие комментарии, я себя чувствую оскорбленным. И не по тому, что я ветеран ЦРУ, а потому, что у меня полное ощущение, что меня и других читателей воспринимают какими-то овощами, полностью утратившими память и когнитивные способности. Тут же не аудитория первого канала, в конце концов, зачем тут всё это чудовищное перевертывание фактов с ног на голову?

Вы думаете тут никто не знает, кто развязал войну в Корее? Никто не в курсе роли войск ООН (при решающем участии США) в противостоянии агрессии Сев. Кореи (при решающем участии КНР и СССР)? Какой прекрасный новый мир был бы построен в Ю.Корее, если бы победил север…

Может быть также мы тут все не в курсе, кто развязал войну в Афганистане? Кто там отправил зеленых человечков, чтобы перестрелять правительство, а заодно и малолетних детей Амина? Бен Ладен? И кстати не было бы никакого Бен Ладена, если бы СССР не плеснул керосина.

Хомейни на финансировании ЦРУ? Браво. Знаете, есть замечательная вещь, называется рассекречивание архивов. Масса интересных вещей можно прочесть, причем лично, без интерпретаций третьих лиц. Вы думаете, тут архивы никто не читает? Никто не в курсе дореволюционных отношений Хомейни и администрации Картера? Только финансирования там никакого не было.

Знаете, США управляются не ангелами, а живыми людьми, причем очень разными, от полных ничтожеств до гигантов. Ошибок и глупостей за долгие годы было немало, не надо приписывать несуществующие.

А что касается непосредственно темы статьи, то опять же, мы тут многие изучали историю и прекрасно знаем, чем заканчиваются эти патриотические истерики. Грустно они заканчиваются, в Нюрнберге и Меццегре, причем почти всегда. Тут ниже шутят на тему ===вы находитесь здесь===, так вот вы находитесь в 1936, после олимпийских игр в Мюнхене и премьеры «Триумфа воли». Самое время остановиться.
Не за что. В свое время тоже долго пытались понять, почему некоторые карты в упор не видят трафик от определенных комбинаций AP-STA, но потом разобрались и задокументировали в этом топике.
Proxim Orinoco a/b/g/n не поддерживает LDPC coding, только BCC. Это модель 2007 года, так что неудивительно. А все новое оборудование почти поголовно живет на LDPC.
Вам виднее. Я ни одного ДА в живую не видел.


Вам удалось воспроизвести их стилистику на пять с плюсом:)

Какое отношение день ПВО имеет к 19-מבצע ערצב и общепризнаной косорукости (что в ВВС, что в ПВО, что в танковых баталиях) арабских «воинов»?


Ну это вы зря. Вы же понимаете, кто там управлял ПВО и сидел в кабинах. К сожалению, погибли, по разным оценкам, от десятков до сотни советских офицеров.

Я просто процитирую:

«До сих пор мало кто в нашей стране знает, что одной из главных причин перестройки стал разгром, который израильская авиация учинила сирийской системе ПВО в ливанской долине Бекаа 9—10 июня 1982 года. Система была, разумеется, советской на сто процентов, причем новейшей на тот момент. Списать катастрофу на обычную недееспособность арабов было нельзя: даже израильтяне признавали, что сирийцы воевали на этот раз хорошо, кроме того, в кабинах уничтоженных ЗРК сидели рядом с сирийцами и советские инструкторы. Просто противник воевал уже по-новому, а мы — еще по-старому.»
(Александр Храмчихин.Военное строительство в России. «Знамя» 2005, №12)
Только меня не оставляет впечатление, что я читаю дембельский альбом?

А по поводу качества и эффективности, стоило бы, например, упомянуть операцию «Медведка 19» в июне 1982 года. Вот где был реальный тест, без рекламы.
Ну замечательно, т.е. вы согласны, что нужен доступ к native API платформы. Тогда встает вопрос: как нормально использовать методы Cocoa-классов, которые требуют в качестве параметра указатель на code block? До сих пор решений для Delphi не было, я его предложил. Для Xamarin, кстати, оно есть.
Действительно, зачем использовать WinAPI, когда вы пишете для Windows? Неужели Delphi настолько ограничен, что нельзя обойтись без этого? Расскажите миру, как в Windows узнать IP-адрес адаптера средствами Delphi или как в macOS узнать, когда система отправляется в sleep средствами Delphi. Без API. Нет, не выходит:)? Нужен свежий взгляд.
Простите, но вы ничего не поняли в статье. Анонимные функции Delphi не могут быть напрямую использованы как блоки в методах Cocoa. Решению как раз этой проблемы и посвящена публикация.
Disclaimer: cужу сугубо по личному опыту. Самое смешное, что большинство слабых кандидатов даже не пытаются нанять фрилансера / попросить друга. Уверенность в собственных знаниях восхищает. Так что задание, даже простенькое — некий фильтр для отсеивания людей с нарушенной самооценкой. Ну а если фильтр пройден — тогда уже можно подробно пообщаться в live-режиме и попытаться оценить реальный опыт.
Забавно, как изменился русский язык. «Пустил агрегат», «в прорез записку» звучать уже очень странно. Сегодня бы агрегат «запустили», а записку бы бросили в «прорезь».
ага! а как версию файла выставляете? или она у вас в исходниках (в .dproj-файле) меняется?
подозреваю, что последнее, судя по

В исходниках меняется.

т.е. CI-сервера нет…*не лень же вам…

Зато есть к чему стремиться:) Нет предела совершенству.
Windows: bat-файл, который:

  • Делает MSBuild проекта.
  • Делает дистрибутив с помощью SetupBuilder, который в процессе сам подписывает Authenticode.
  • Зипует.

Bat-файл запускает специально обученный homo sapiens.

Mac (предварительно, как я сказал, коммерческих релизов пока нет): bat-файл, который:

  • Делает MSBuild проекта.
  • Деплоит релиз на Мак с помощью embdeploy.
  • Подписывает релиз на Маке с помощью того же embdeploy (хотя можно через paclient.exe).
  • Делает DMG-файл на Маке с помощью CreateDMG.

Bat-файл запускает специально обученный homo sapiens, иногда тот же самый.
Внесу свой маленький вклад. Когда вы планируете использовать текст, занимающий несколько строк, и вам нужно рассчитать вручную то место, где нужно сделать перенос строки, не полагайтесь в вашем алгоритме на то, что между словами будут пробелы. Если текст, скажем, на китайском, то вы можете не дождаться пробела.
и в итоге я потратил ПОЛГОДА(sic!), чтобы только, по большому счёту, заменить реализацию TCP-сервера с Windows-only компонентов OverbyteICS на кроссплатформенные Indy


Кстати ICS неплохо работает на macOS, мы его используем в нашей бесплатной утилите TamoSoft Throughput Test (маковская версия тоже на FMX сделана). Жаль, что не работает на Linux и iOS.

Вы мне скажите, как у вас релизы выпускаются? чем собираются?

Не очень понял, о каких именно релизах речь. Windows? macOS? На macOS продукт пока не готов. На Windows — всё билдится из командной строки, собирается в сетап, подписывается, и.п. Или речь о чем-то другом? Единственный «ручной» этап, спасибо новым политикам Microsoft, это подписывание драйверов для Windows 10 на их портале. Это конечно дико неудобно.
Спасибо за разъяснения!

собственно, к тому и клоню, что conditional defines в приведённом Вами виде — это лапша, ведь согласитесь?

Да, примерно в той же степени, что и System.Sysutils или System.Classes.

всё сделано в коде FMX, причём «красиво» и понятно: под каждую платформу — в своём модуле.
а чтобы добавить, например, поддержку BT в Linux (ну, это я так, абстрактно), им только надо будет добавить модуль реализации для этой платформы, а в вашем коде менять ничего не придётся…


Согласен, этот подход неплох. Просто дело в том, что иногда приходится выбирать между красотой и производительностью труда. Можно сделать красиво, как те же platform services в FMX, а можно быстро, с IFDEFs, причем, на мой взгляд, вероятность наделать ошибок во втором случае существенно ниже, потому что не будет такого объема рефакторинга. Когда есть много людей и много времени — это одно, когда людей мало и когда вы торопитесь выкатить продукт быстрее конкурентов — это другое. У нас был сотрудник, который мог потратить несколько дней на то, чтобы написать супер-эффективную function IPv4ToStr(const IP: Cardinal): string, которая работала быстрее станадртной винсоковской в десятки раз. Проблема была только в том, что она вызывалась крайне редко, и ее скорость работы ни на что не влияла… В конце концов мы расстались:-)

Про автотесты — нет. Про форматирование — ну слушайте, давайте не будем обсуждать личные преференции конкретного программиста в части форматирования:-) Опять же, в идеальном мире все форматируют идеально. В реальном — как привыкли. Я никого за это не ругаю, хотя сам часто бурчу под нос, когда читаю код с нестандартным форматированием.
Да, конечно, только не очень понял, к чему вы в данном случае клоните… Есть Delphi-класс (кстати, написанный не нами) для работы с GPS через COM-порты. Класс для одной платформы, Windows. Мы его сделали мультиплатформенным, используя несколько десятков conditional defines, чтобы под Windows остался WinAPI, а под macOS стал использоваться POSIX. Нам мог бы облегчить жизнь какой-нибудь из design patterns? Если да — расскажите, буду благодарен, и в следующий раз мы пойдем другим путем.
Рассматриваля на самом начальном этапе, но был отброшен. Кроме 64-битного компилятора, других преимуществ мы в Lazarus не нашли. Source code пришлось бы править в той или иной степени. И с визуальными контролами там не так чтобы всё хорошо было.
Спасибо! Мы привыкли к приключениям:) В Windows тоже много приключений было за последние 20 лет.
Ощущения забивания гвоздей отверткой совсем нет. Наоборот, приятно и интересно. Мне кажется, что это все же преувеличение. Я как раз писал о том, что инструмент адекватен задаче.

По поводу изучения obj-c — да, это один из возможных путей, и для некоторых из нас даже учить ничего не надо, уже всё выучено, но я объяснил в статье, что нам представилось более разумным решением не переписывать горы кода, а использовать большую часть as is. Так что никаких священных войн, чистая целесообразность.
Ок, на эту тему могу сказать следующее:
  • Для iOS (но не для macOS) блоки реализованы в юните Macapi.OCBlocks.pas. Я лично не проверял, как это работает, поскольку для iOS мы пока ничего не пишем, но, теоретически, должно работать.
  • GDC вполне «юзабелен», особенно с помощью обертки, о которой идет речь тут: https://ridingdelphi.blogspot.ru/ . Ссылка на сорс там есть внизу. Хотя, замечу, что в macOS у нас пока не возникло необходимости использовать этот код.
  • Для работы с потоками нас пока вполне устраивает родной дельфийский TThread (ну и плюс анонимные треды, что тоже очень удобно).

Information

Rating
1,923-rd
Location
Израиль
Registered
Activity