Комментарии 42
Написание API это возврат к трясине, и снова все по кругу
0
Сижу пишу класс. Понял, что я в трясине.
Так, не заниматься самобичеванием, не заниматься…
Так, не заниматься самобичеванием, не заниматься…
+1
Есть чувство, что автор статьи немного уклонился от темы. Тьюринговская трясина — это о языках и вычислимости. Другими словами, есть много «языков», на которых можно реализовать все, что и на обычном языке программирования типа С. Строго говоря — тьюринг-полных языков. Но делать это непрактично, хотя иногда и интересно.
Хороший пример — брейнфак.
Еще один пример — клеточный автомат, та же игра «жизнь». Выставляя определенным образом значения на поле мы можем просчитать любую (вычислимую) функцию.
Но решать с помощью этого практические задачи нет смысла.
Хороший пример — брейнфак.
Еще один пример — клеточный автомат, та же игра «жизнь». Выставляя определенным образом значения на поле мы можем просчитать любую (вычислимую) функцию.
Но решать с помощью этого практические задачи нет смысла.
+13
Точно. Мне в качестве примера трясины больше нравится sendmail — где конфиг это настоящий язык программирования, оперирующий на самом низком уровне обработки почты. В результате пользоваться им (языком конфигурации) практически невозможно, поэтому пришлось сочинять надстройку на макропроцессоре m4 для создания конфигураций.
+6
Естественно, что разработчики платного софта пытаются получить преимущества перед конкурентами.
Недавно искал простую, казалось бы, программу для наложения водяных знаков на фотографии.
Их десятки, сотни. Большинство из них платные. Так вот в платных чего только нет. Навороченные редакторы водяных знаков, с какими то супер пупер градиентами и прочими плюшками. Стоит это все 99$ pro лицензии.
Среди всех программ не нашел ни одной, которая мне подходила.
Мог бы за пару часов в фотошопе решить эту задачу, но сел за написание программы. Ушло три дня (включая написание документации, официальной страницы программы), и первоначальную задачу решил за 10 минут. Теперь зато есть новая и уникальная бесплатная программа )
Недавно искал простую, казалось бы, программу для наложения водяных знаков на фотографии.
Их десятки, сотни. Большинство из них платные. Так вот в платных чего только нет. Навороченные редакторы водяных знаков, с какими то супер пупер градиентами и прочими плюшками. Стоит это все 99$ pro лицензии.
Среди всех программ не нашел ни одной, которая мне подходила.
Мог бы за пару часов в фотошопе решить эту задачу, но сел за написание программы. Ушло три дня (включая написание документации, официальной страницы программы), и первоначальную задачу решил за 10 минут. Теперь зато есть новая и уникальная бесплатная программа )
+5
> Теперь зато есть новая и уникальная бесплатная программа
Респекты вам за это, но можно плз в двух словах пояснить в чем киллер-фича (и кстати ссылка на упомянутую страницу была бы очень кстати :)), т.е. почему не подошло например вот такое решение:
www.imagemagick.org/Usage/annotating/#wmark_image
Респекты вам за это, но можно плз в двух словах пояснить в чем киллер-фича (и кстати ссылка на упомянутую страницу была бы очень кстати :)), т.е. почему не подошло например вот такое решение:
www.imagemagick.org/Usage/annotating/#wmark_image
+3
Допустим, нам надо поставить ватермарк на 50 фотографий. Подобрав положение и размер для первой фотографии, на второй он может уже не так смотреться. Для первой фотографии снизу слева, для второй сверху слева и повернутый на 90 грудусов, на третьей должен быть инвертирован (белый на темной фотографии или черный на белой фотографии). Плюс фотографии могут иметь разный размер, и водяной знак должен быть пропорционален.
101watermark.igor-k.ru (осталось пару недоделок, к вечеру будут исходники. Написано на python).
Программа позволяет все это сделать быстро и пакетно, предусмотрены хоткеи.
101watermark.igor-k.ru (осталось пару недоделок, к вечеру будут исходники. Написано на python).
Программа позволяет все это сделать быстро и пакетно, предусмотрены хоткеи.
+2
ссылка на исходники не работает (404)
0
Ну я же написал, исходники выложу вечером.
Да и нет там ничего интересного, так, новичкам поучиться по мелочам)
Да и нет там ничего интересного, так, новичкам поучиться по мелочам)
0
Мне просто хотелось бы под linux запустить.
0
Забирайте. Специально для Вас протестил под Ubuntu (чуть чуть подправить пришлось платформоспецифичные мелочи).
Для работы нужен python>=2.6, пакеты python-tk,python-ttk,python-imaging,python-imagingtk
Для работы нужен python>=2.6, пакеты python-tk,python-ttk,python-imaging,python-imagingtk
0
Отлично! Теперь добавьте список с вотерматками, чтобы можно было на лету выбирать: иногда я использую просто инициалы, иногда полное написание Гельветикой, а иногда с Бодони. Эффекты для вотермарков, рамочки и сепию. И продавайте по $99.
+5
Сам люблю для себя все автоматизировать с помощью скриптов. Бывает написать что то самому быстрее, чем найти готовое решение.
+4
НЛО прилетело и опубликовало эту надпись здесь
Забавно. Столько раз сталкивался с такой ситуацией и даже не знал, что у нее есть официальное название. Спасибо за ликбез.
+1
НЛО прилетело и опубликовало эту надпись здесь
Вот многие задумались о том, что сами когда-то рождали монстров на языке программирования.
Но на самом деле все дело в мышлении человека и его «запасливости». Все делается с запасом на будущее — а будущее часто поворачивает в такую сторону, в которую люди и не могли подозревать.
Но на самом деле все дело в мышлении человека и его «запасливости». Все делается с запасом на будущее — а будущее часто поворачивает в такую сторону, в которую люди и не могли подозревать.
0
комментарий не в тему. Речь шла не про bloatware, а про инструменты программистов.
А вообще, да, есть такое.
А вообще, да, есть такое.
+3
Напомнило историю:
Шел рыцарь по пустыне. Долгим был его путь. По пути он потерял коня, шлем и доспехи. Остался только меч.
Рыцарь был голоден, и его мучила жажда. Вдруг вдалеке он увидел озеро.
Собрал рыцарь все свои оставшиеся силы и пошел к воде. Но у самого озера сидел трехглавый дракон. Рыцарь выхватил меч и из последних сил начал сражаться с чудовищем. Сутки бился, вторые бился. Две головы дракона отрубил. На третьи сутки дракон упал без сил. Рядом упал обессиленный рыцарь, не в силах уже более стоять на ногах и держать меч.
И тогда из последних сил дракон спросил:
— Рыцарь, а ты чего хотел-то?
— Воды попить.
— Ну, так и пил бы…
Шел рыцарь по пустыне. Долгим был его путь. По пути он потерял коня, шлем и доспехи. Остался только меч.
Рыцарь был голоден, и его мучила жажда. Вдруг вдалеке он увидел озеро.
Собрал рыцарь все свои оставшиеся силы и пошел к воде. Но у самого озера сидел трехглавый дракон. Рыцарь выхватил меч и из последних сил начал сражаться с чудовищем. Сутки бился, вторые бился. Две головы дракона отрубил. На третьи сутки дракон упал без сил. Рядом упал обессиленный рыцарь, не в силах уже более стоять на ногах и держать меч.
И тогда из последних сил дракон спросил:
— Рыцарь, а ты чего хотел-то?
— Воды попить.
— Ну, так и пил бы…
+63
Это не обобщённость и могущественность, а переусложнённость.
Обобщённость и могущественность — это математика.
Обобщённость и могущественность — это математика.
+2
Программа, которая делает все и ничего:
Да, я как-то почти до такого докатился :)
void*MegaFunction(void*(*f)(void*),void*arg)
{
return f(a);
}
Да, я как-то почти до такого докатился :)
+6
Одной мало! Надо 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
0
Похоже на большинство видимых мной «посетителей».
0
Не скомпилится ;)
+1
А я не жалею о нашей трясине.
Мы пишем крутую универсальную библиотеку (этим у нас занимаются двое), которой пользуется вся остальная команда уже в котором по счету проекте. Уже сколько лет. Иногда трясина — это хорошо. Сы придумали новые подходы. Мы облегчили себе жизнь. Мы сэкономили тысячи строк кода.
Мы пишем крутую универсальную библиотеку (этим у нас занимаются двое), которой пользуется вся остальная команда уже в котором по счету проекте. Уже сколько лет. Иногда трясина — это хорошо. Сы придумали новые подходы. Мы облегчили себе жизнь. Мы сэкономили тысячи строк кода.
+1
Меня частенько в неё затягивает.
Вот пишу программу по наиболее правильной схеме библиотека -> интерфейс к ней.
И постепенно библиотека превращается в фреймворк и библиотеку, построенную на этом фреймворке.
В погоне за универсальностью переделывается архитектура.
В результате срыв сроков, гейзенбаги и прочие неприятности.
Вот пишу программу по наиболее правильной схеме библиотека -> интерфейс к ней.
И постепенно библиотека превращается в фреймворк и библиотеку, построенную на этом фреймворке.
В погоне за универсальностью переделывается архитектура.
В результате срыв сроков, гейзенбаги и прочие неприятности.
0
Как-то на RSDN пробегала картинка в тему:
![image](http://rsdn.ru/File/53829/%d0%bd%d0%b5%20%d1%80%d0%b0%d0%b7%d0%b3%d1%80%d0%b5%d1%81%d1%82%d0%b8.jpg)
:)
![image](http://rsdn.ru/File/53829/%d0%bd%d0%b5%20%d1%80%d0%b0%d0%b7%d0%b3%d1%80%d0%b5%d1%81%d1%82%d0%b8.jpg)
:)
+10
в emacs есть команда для этого
xkcd.com/378/
xkcd.com/378/
0
Круто.
Теперь я знаю, как называется моя неизлечимая болезнь.
Теперь я знаю, как называется моя неизлечимая болезнь.
+3
Начали за здравие, закончили за упокой.
Тьюринговская трясина, идеально гибкая программа и добавление лишних функций – это точно ОДНА тема?
Тьюринговская трясина, идеально гибкая программа и добавление лишних функций – это точно ОДНА тема?
+5
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Тьюринговская трясина