Comments 42
Написание API это возврат к трясине, и снова все по кругу
Сижу пишу класс. Понял, что я в трясине.
Так, не заниматься самобичеванием, не заниматься…
Так, не заниматься самобичеванием, не заниматься…
Есть чувство, что автор статьи немного уклонился от темы. Тьюринговская трясина — это о языках и вычислимости. Другими словами, есть много «языков», на которых можно реализовать все, что и на обычном языке программирования типа С. Строго говоря — тьюринг-полных языков. Но делать это непрактично, хотя иногда и интересно.
Хороший пример — брейнфак.
Еще один пример — клеточный автомат, та же игра «жизнь». Выставляя определенным образом значения на поле мы можем просчитать любую (вычислимую) функцию.
Но решать с помощью этого практические задачи нет смысла.
Хороший пример — брейнфак.
Еще один пример — клеточный автомат, та же игра «жизнь». Выставляя определенным образом значения на поле мы можем просчитать любую (вычислимую) функцию.
Но решать с помощью этого практические задачи нет смысла.
Точно. Мне в качестве примера трясины больше нравится sendmail — где конфиг это настоящий язык программирования, оперирующий на самом низком уровне обработки почты. В результате пользоваться им (языком конфигурации) практически невозможно, поэтому пришлось сочинять надстройку на макропроцессоре m4 для создания конфигураций.
Естественно, что разработчики платного софта пытаются получить преимущества перед конкурентами.
Недавно искал простую, казалось бы, программу для наложения водяных знаков на фотографии.
Их десятки, сотни. Большинство из них платные. Так вот в платных чего только нет. Навороченные редакторы водяных знаков, с какими то супер пупер градиентами и прочими плюшками. Стоит это все 99$ pro лицензии.
Среди всех программ не нашел ни одной, которая мне подходила.
Мог бы за пару часов в фотошопе решить эту задачу, но сел за написание программы. Ушло три дня (включая написание документации, официальной страницы программы), и первоначальную задачу решил за 10 минут. Теперь зато есть новая и уникальная бесплатная программа )
Недавно искал простую, казалось бы, программу для наложения водяных знаков на фотографии.
Их десятки, сотни. Большинство из них платные. Так вот в платных чего только нет. Навороченные редакторы водяных знаков, с какими то супер пупер градиентами и прочими плюшками. Стоит это все 99$ pro лицензии.
Среди всех программ не нашел ни одной, которая мне подходила.
Мог бы за пару часов в фотошопе решить эту задачу, но сел за написание программы. Ушло три дня (включая написание документации, официальной страницы программы), и первоначальную задачу решил за 10 минут. Теперь зато есть новая и уникальная бесплатная программа )
> Теперь зато есть новая и уникальная бесплатная программа
Респекты вам за это, но можно плз в двух словах пояснить в чем киллер-фича (и кстати ссылка на упомянутую страницу была бы очень кстати :)), т.е. почему не подошло например вот такое решение:
www.imagemagick.org/Usage/annotating/#wmark_image
Респекты вам за это, но можно плз в двух словах пояснить в чем киллер-фича (и кстати ссылка на упомянутую страницу была бы очень кстати :)), т.е. почему не подошло например вот такое решение:
www.imagemagick.org/Usage/annotating/#wmark_image
Допустим, нам надо поставить ватермарк на 50 фотографий. Подобрав положение и размер для первой фотографии, на второй он может уже не так смотреться. Для первой фотографии снизу слева, для второй сверху слева и повернутый на 90 грудусов, на третьей должен быть инвертирован (белый на темной фотографии или черный на белой фотографии). Плюс фотографии могут иметь разный размер, и водяной знак должен быть пропорционален.
101watermark.igor-k.ru (осталось пару недоделок, к вечеру будут исходники. Написано на python).
Программа позволяет все это сделать быстро и пакетно, предусмотрены хоткеи.
101watermark.igor-k.ru (осталось пару недоделок, к вечеру будут исходники. Написано на python).
Программа позволяет все это сделать быстро и пакетно, предусмотрены хоткеи.
ссылка на исходники не работает (404)
Ну я же написал, исходники выложу вечером.
Да и нет там ничего интересного, так, новичкам поучиться по мелочам)
Да и нет там ничего интересного, так, новичкам поучиться по мелочам)
Мне просто хотелось бы под linux запустить.
Забирайте. Специально для Вас протестил под Ubuntu (чуть чуть подправить пришлось платформоспецифичные мелочи).
Для работы нужен python>=2.6, пакеты python-tk,python-ttk,python-imaging,python-imagingtk
Для работы нужен python>=2.6, пакеты python-tk,python-ttk,python-imaging,python-imagingtk
Отлично! Теперь добавьте список с вотерматками, чтобы можно было на лету выбирать: иногда я использую просто инициалы, иногда полное написание Гельветикой, а иногда с Бодони. Эффекты для вотермарков, рамочки и сепию. И продавайте по $99.
Сам люблю для себя все автоматизировать с помощью скриптов. Бывает написать что то самому быстрее, чем найти готовое решение.
Забавно. Столько раз сталкивался с такой ситуацией и даже не знал, что у нее есть официальное название. Спасибо за ликбез.
Вот многие задумались о том, что сами когда-то рождали монстров на языке программирования.
Но на самом деле все дело в мышлении человека и его «запасливости». Все делается с запасом на будущее — а будущее часто поворачивает в такую сторону, в которую люди и не могли подозревать.
Но на самом деле все дело в мышлении человека и его «запасливости». Все делается с запасом на будущее — а будущее часто поворачивает в такую сторону, в которую люди и не могли подозревать.
комментарий не в тему. Речь шла не про bloatware, а про инструменты программистов.
А вообще, да, есть такое.
А вообще, да, есть такое.
Напомнило историю:
Шел рыцарь по пустыне. Долгим был его путь. По пути он потерял коня, шлем и доспехи. Остался только меч.
Рыцарь был голоден, и его мучила жажда. Вдруг вдалеке он увидел озеро.
Собрал рыцарь все свои оставшиеся силы и пошел к воде. Но у самого озера сидел трехглавый дракон. Рыцарь выхватил меч и из последних сил начал сражаться с чудовищем. Сутки бился, вторые бился. Две головы дракона отрубил. На третьи сутки дракон упал без сил. Рядом упал обессиленный рыцарь, не в силах уже более стоять на ногах и держать меч.
И тогда из последних сил дракон спросил:
— Рыцарь, а ты чего хотел-то?
— Воды попить.
— Ну, так и пил бы…
Шел рыцарь по пустыне. Долгим был его путь. По пути он потерял коня, шлем и доспехи. Остался только меч.
Рыцарь был голоден, и его мучила жажда. Вдруг вдалеке он увидел озеро.
Собрал рыцарь все свои оставшиеся силы и пошел к воде. Но у самого озера сидел трехглавый дракон. Рыцарь выхватил меч и из последних сил начал сражаться с чудовищем. Сутки бился, вторые бился. Две головы дракона отрубил. На третьи сутки дракон упал без сил. Рядом упал обессиленный рыцарь, не в силах уже более стоять на ногах и держать меч.
И тогда из последних сил дракон спросил:
— Рыцарь, а ты чего хотел-то?
— Воды попить.
— Ну, так и пил бы…
Это не обобщённость и могущественность, а переусложнённость.
Обобщённость и могущественность — это математика.
Обобщённость и могущественность — это математика.
Программа, которая делает все и ничего:
Да, я как-то почти до такого докатился :)
void*MegaFunction(void*(*f)(void*),void*arg)
{
return f(a);
}
Да, я как-то почти до такого докатился :)
Одной мало! Надо 3!
def identity[A](x: A): A = x
def implicitly[T](implicit e: T) = e
@inline def locally[T](x: T): T = x
Это не бесполезный код. Это функции импортируемые по умолчанию в любой исходник на scala.
lampsvn.epfl.ch/trac/scala/browser/scala/tags/R_2_9_1_final/src//library/scala/Predef.scala
def identity[A](x: A): A = x
def implicitly[T](implicit e: T) = e
@inline def locally[T](x: T): T = x
Это не бесполезный код. Это функции импортируемые по умолчанию в любой исходник на scala.
lampsvn.epfl.ch/trac/scala/browser/scala/tags/R_2_9_1_final/src//library/scala/Predef.scala
Похоже на большинство видимых мной «посетителей».
Не скомпилится ;)
А я не жалею о нашей трясине.
Мы пишем крутую универсальную библиотеку (этим у нас занимаются двое), которой пользуется вся остальная команда уже в котором по счету проекте. Уже сколько лет. Иногда трясина — это хорошо. Сы придумали новые подходы. Мы облегчили себе жизнь. Мы сэкономили тысячи строк кода.
Мы пишем крутую универсальную библиотеку (этим у нас занимаются двое), которой пользуется вся остальная команда уже в котором по счету проекте. Уже сколько лет. Иногда трясина — это хорошо. Сы придумали новые подходы. Мы облегчили себе жизнь. Мы сэкономили тысячи строк кода.
Меня частенько в неё затягивает.
Вот пишу программу по наиболее правильной схеме библиотека -> интерфейс к ней.
И постепенно библиотека превращается в фреймворк и библиотеку, построенную на этом фреймворке.
В погоне за универсальностью переделывается архитектура.
В результате срыв сроков, гейзенбаги и прочие неприятности.
Вот пишу программу по наиболее правильной схеме библиотека -> интерфейс к ней.
И постепенно библиотека превращается в фреймворк и библиотеку, построенную на этом фреймворке.
В погоне за универсальностью переделывается архитектура.
В результате срыв сроков, гейзенбаги и прочие неприятности.
Как-то на RSDN пробегала картинка в тему:

:)

:)
в emacs есть команда для этого
xkcd.com/378/
xkcd.com/378/
Круто.
Теперь я знаю, как называется моя неизлечимая болезнь.
Теперь я знаю, как называется моя неизлечимая болезнь.
Начали за здравие, закончили за упокой.
Тьюринговская трясина, идеально гибкая программа и добавление лишних функций – это точно ОДНА тема?
Тьюринговская трясина, идеально гибкая программа и добавление лишних функций – это точно ОДНА тема?
Sign up to leave a comment.
Тьюринговская трясина