КодоБред

индекс
3,20

SSH и FTP через Dropbox

Всем доброго хабрадня!

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

Внимание! Всё нижеописанное не является руководством к действию и воспринимать это стоит не иначе как юмор. А то больно всерьёз все восприняли… =)

Для начала немного предыстории. Недавно возникла очень острая необходимость в ssh доступе на некоторый unix-based компьютер, дабы выполнить там svn diff > mypatch.diff и перекинуть результат по ftp. Но оказалось, что целевая машина по некоторым причинам не хочет пинговаться! Причём, по словам админов, и не предвидится пинг к ней, хотя выход в интернет она имеет. И я решил, что неплохо бы пробросить ssh через что-то стороннее. В голову сразу начали лезть VPN, reverse ssh, туннели и прочее. Но для большинства решений нужна дополнительная машина и/или дополнительный софт, либо это требует перенастройки самой сети (что для меня совсем не вариант — сеть-то не моя). Я уже готов был отчаяться и гуглить упорнее, но тут в мою не совсем здоровую голову пришла мысль: а что если заюзать дропбокс?
+33
19 апреля 2012, 15:55
100
silvansky 141,9

Цзяньшицзы и tcl

Есть такой редкий малоизвестный язык программирования tcl. В википедии он расписан хорошо, но при написании программы возникнут вопросы.
Цзяньшицзы — это такая китайская(судя по названию) игра, переводится как «выбирание камней», интересна сама по себе: есть две кучки камней с любым количеством камней, играют двое. Каждый игрок может взять любое число камней из любой кучи, а также равное количество сразу из обоих. Побеждает тот, кто возьмет последний камень. Более подробное описание тут. Игра на сохранение баланса: с одной стороны, нужно чтобы числа в кучах различались, с другой, чтобы различие было не слишком большим. Начнем с того, что игра имеет выигрышную стратегию, происхождение которой мы рассматривать не будем. Возьмем лишь краткое описание. Существуют сочетания размеров куч, при которых игрок, который будет делать следующий ход, проигрывает.




Квадратные скобки обозначают взятие целой части. Нет, первая формула — это не числа Фибоначчи, хотя коэффициент тот же, но тут арифметическая прогрессия, а не геометрическая. Сразу заметим, что разница между числами пары составляет n.

Ранее на хабре были Реверси на TCL в 64 строки и Пятнашки на TCL в 10 строк, в которых был компактный и красивый код, здесь вы такого не увидите. Также он, возможно, далек от правил хорошего тона. Вобщем, если вам что-то покажется говнокодом, скорее всего так оно и есть. С другой стороны, это даже хорошо, потому что будет что улучшать в дальнейшем. Отчасти из-за того, что язык для меня новый, отчасти чтобы было удобнее делать пояснения. Также отсутствуют необязательные проверки.
Далее будут идти куски программы. Она далеко не оптимальна, но показывает особенности языка и работает.
+1
2 апреля 2012, 22:48
9
dtestyk 1,3

Лучший неудобочитаемый код из песочницы

Все мы привыкли иногда/много писать плохой, часто — неудобочитаемый код, в результате получая недовольные лица коллег. Но если мы уж очень любим писать неудобочитаемый код, то постараемся быть лучшими. И так, лучшие неудобо-кодеры 2011.

Победитель конкурса

#include <iostream>

class ___000___
{
public:
  ___000___(int _) { m_____ = _; }
  ~___000___() {}

  void _1_2_3_4_5_() { std::cout << m_____; }
  int ____2_2___() { return m_____ * m_____; }
private:
  int m_____;
};
+30
8 сентября 2011, 13:09
16

GeoIP, попытки нетрадиционного использования из песочницы

Делать было вечером, делать было нечего...

Предыстория


В один прекрасный момент, случайно наткнулся на старый сервис, который позволяет вешать картинку на свой сайт, которая показывает географическое положение посетителей. Их много и разных.
Вещь сама по себе не такая уж полезная, мне как то данные awstats'а хватает за глаза.
Но для демонстрации посетителю, что он не случайный идиот прохожий забредший на мертвый сайт это дело подходит.
Дальше как и полагается раскинул мозгами на тему, а как же они это делают, разобрался и вроде успокоился…

Но больная голова покоя рукам не дает, так что сейчас я вам покажу один забавный и не несущий смысловую нагрузку эксперимент.
image
Это выборка всех возможных координат IP-шников (с округленные до целых).
Можно сказать, что это фотография интернета ареал обитания TCP/IP

Внимание, автор не является кодером в хорошем смысле этого слова, поэтому лиц, которых может шокировать копрокод прошу удалиться.
+84
14 июня 2011, 08:37
56
Klef 10,5

Говнокод: врага надо знать в лицо



Все примерно представляют, что такое говнокод. На этом замечательном сайте собрана целая коллекция.

Что делает код говнокодом — никто точно не знает. Точного определения нет. Часто то, что одни считают очевидным говнокодом, другим кажется лаконичным и эффективным решением.

Примеры


Примеры говнокода варьируются от избыточных до откровенного хардкода. Самые любмые примеры — такие, говнокодистость которых очевидна для всех:
Boolean b = new Boolean( is_admin );
if( b.toString().length() == 4 ) {
   // something...
}
// something


Но знаете, что я скажу? Осуждать говнокод легко, но написать его не так-то легко!
Не верите? Давайте попробуем!

UPD Ниже добавлен анализ поступивших решений.

+53
5 апреля 2011, 04:35
28
asolntsev 40,0

Система частиц на PHP в 3D

С детства есть у меня заветная программерская мечта — написать физический движок. Как и положено мечте, я к ней никогда близко не подходил. Но однажды выдалась пара ночей, когда я должен был дежурить в помещении, и у меня с собой был ноутбук.
В общем, взялся я моделировать движение и столкновение частиц на PHP. Почему на PHP? Потому что это единственный язык, на котором я могу свободно излагать свои программерские мысли. В общем, сначала координаты выводились в консоли, потом стал делать графические снимки. Немедленно появилась мысль генерировать анимацию…
image

+86
18 марта 2011, 23:30
57
Vasya_Sh 8,4

По колено в г… коде

по колено в Си++
Я по роду своей деятельности много и часто медитирую над разнообразнейшим C++ кодом. И, как говорится, у меня накопилось. Не могу больше нести это в себе. Извините, сейчас и с вами поделюсь.

+79
1 марта 2011, 16:18
29
Andrey2008 127,0

Assword

Один из самых восхитительных примеров кода, который я когда-либо встречал.
Как сказано в комментарии, этот код пытается найти в строке подстроку «Nothing», «Successful», «Password» или «Failed», причём регистр первой буквы неважен.

protected void parseSummaryLines()
{
   ...

   // NOTE: First letters are ommited in order to
   // support capitalized words as well
   String RESULT_GOOD_TEXT_1 = "othing"; // Nothing
   String RESULT_GOOD_TEXT_2 = "uccessful"; // Successful
   String RESULT_BAD_TEXT_1 = "assword"; // Password
   String RESULT_BAD_TEXT_2 = "failed"; // Failed

   ...
}


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

Но в любом случае, получившееся в результате «Жопослово» — это шедевр…
+4
21 февраля 2011, 01:37
asolntsev 40,0

Установка лимита времени выполнения скрипта

//This is an optimization. We assume than no step can take more than one year.
if($time_limit > 0)
$end_time = time() + $time_limit;
else
$end_time = time() + 365*24*3600; // One year


Взято из 1С-Битрикс (из класса разбора CommerceML).
+79
22 июля 2010, 12:24
6
Mexos 3,4

Страница про IE8 разваливается в IE8

image hosting blogs journals
+87
21 мая 2010, 16:12
2
alemiks 1,0