• ↓
  • ↑
  • ⇑
 
Записи с темой: root@глупыйпингвин:~# (список заголовков)
17:47 

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

Перед нами двумерный массив пикселей. Каждый из них может принимать, скажем, 0xFF**3 различных значений без учёта прозрачности. Если мы хотим другую палитру, то к нашим услугам такие-то и такие алгоритмы дитеринга (например, Флойд-Штейнберг). Ещё мы можем работать с несколькими такими массивами одновременно и клепать из них анимированные изображения (с такими-то и такими-то алгоритмами уменьшения размера итогового файла, использующими, например, тот факт, что многие пиксели от кадра к кадру не меняются). А вот вейвлет-разложение. А вот оператор Собеля. А вот скрипты, которыми мы всё это автоматизируем. А вот перед нами уже вообще не растровая графика, а кривые Безье, вводить их опорные точки можно таким-то и таким-то способом, вот у нас объединение, пересечение, разность и симметрическая разность двух контуров, а вот клотоиды...

Какой, к стержням графитовым, карандаш в таком месте? Какое, к чертям чернильным, перо?!

@темы: root@глупыйпингвин:~#

13:28 

Мегакрендель: заколебарь, жаболекарь, зомболекарь, лежебокарь
Вот это порождение нечестивого хаоса — синтактически корректный пайтон:

ы . ы , ы [
:,::...,:...,:...:
...,...:,...::...,
...:...,...:...:...
] . ы , ы ,

пояснения и не очень практичный пример

@темы: root@глупыйпингвин:~#

15:46 

Мегакрендель: заколебарь, жаболекарь, зомболекарь, лежебокарь
Старенький агрегат пережил уже второй ноут и снова меня спасает в трудную минуту.

Довольно странно смотреть на срез своей жизни, законсервированный два года назад.

@темы: root@глупыйпингвин:~#

13:25 

Мегакрендель: заколебарь, жаболекарь, зомболекарь, лежебокарь
Ещё из рубрики.

В пайтоне, как известно, есть замыкания:

читать дальше

Свободные переменные, которые теперь по уму должны быть видны только самой функции, всё равно можно посмотреть, хоть это и неудобно:

читать дальше

А ещё их можно изменять (посредством чОрной, чОрной магии):

читать дальше

А, например, в R та же магия куда менее черна, и попытка использовать что-то такое в реальном коде уже не обязательно относится к «ни в коем случае»:

читать дальше

@темы: root@глупыйпингвин:~#

18:49 

Мегакрендель: заколебарь, жаболекарь, зомболекарь, лежебокарь
Ради борьбы со стереотипами: почитайте про Грейс Хоппер — автора самого первого компилятора и не только. Расскажите тем, кто ещё не знает.

@темы: root@глупыйпингвин:~#

15:16 

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

* * *


Новое начальство дало мне доступ в репозиторий и разрешение делать там всё, что посчитаю нужным, объяснило задачу и дедлайн и отпустило. В коде комментарии вида "# all sysem informations for the programm are here" и "# TODO: wo taucht dieser Plot auf?". Папка man пустая. Зато есть файлы aaa.r и zzz.r.

* * *


Комната была рядом с лётным полем, на котором торчал какой-то забытый самолёт. Башня с полувыломанными ножк полувыбитыми стёклами. Хорошо было изнутри смотреть, как буря деревья мотает.

Ещё неподалёку была улица Milchstraße, что значит — Млечный путь.

* * *


Самые интересные места в городе видно издали по малахитово-зелёным старым крышам. Что это, кстати? Карбонат меди?

* * *


ещё фотографии

* * *


P.S.: Мимими.

@темы: там леший бродит, по всей Германии wetter, мамонты и кузнечики, root@глупыйпингвин:~#

02:04 

Мегакрендель: заколебарь, жаболекарь, зомболекарь, лежебокарь
Самый простой способ вогнать Common Lisp в бесконечный цикл — это, как ни странно, написать в интерпретаторе (loop).

Там, внутри, оно превращается в (BLOCK NIL (TAGBODY #:LOOP-3091 (GO #:LOOP-3091))), название метки может варьироваться.

@темы: root@глупыйпингвин:~#

03:26 

Мегакрендель: заколебарь, жаболекарь, зомболекарь, лежебокарь
Из пайтона довольно легко потрогать тикль:

>>> from tkinter import Tcl #во втором пайтоне Tkinter, прочее точно так же
>>> tcl = Tcl()
>>> tcl.eval("set a ret; set b urn; $a$b schtschekotno!")
'schtschekotno!'

Не так удобно, но тоже можно потрогать из пайтона кложуровский nrepl (для этого надо pip install nrepl-python-client):

>>> import nrepl
>>> c = nrepl.connect("nrepl://localhost:60838") #или какой там у вас порт
>>> c.write({'op': 'eval', 'code': '(doto (java.util.ArrayList.) (.add (-> 4 (+ 2) (* 7))))'})
>>> c.read()
{'session': '3e671746-bbee-426d-a6a4-578d963be88c', 'ns': 'user', 'value': '[42]'}
>>> c.read()
{'session': '3e671746-bbee-426d-a6a4-578d963be88c', 'status': ['done']}

@темы: root@глупыйпингвин:~#

19:04 

Мегакрендель: заколебарь, жаболекарь, зомболекарь, лежебокарь
18:12 

Мегакрендель: заколебарь, жаболекарь, зомболекарь, лежебокарь
Продолжаем рубрику «как не надо на пайтоне, или Zweckentfremdung».

о присваивании внутри выражения

В следующем выпуске: рекурсия в лямбдах и отступы мышиным хвостиком, как у Кэрролла.

@темы: root@глупыйпингвин:~#

08:53 

Мегакрендель: заколебарь, жаболекарь, зомболекарь, лежебокарь
Сейчас вы услышите трагическую и поучительную историю о мальчике Бобби, который поленился запускать большую тяжёлую Visual Studio ради мааааахонького файлика на F# и пытался скомпилировать этот файлик из консоли. Он получал странные и незнакомые ошибки на ровном месте, вроде expected class or object definition. Он недоумевал — какие, к бесу, объекты? А потом оказалось, что он всё это время вызывал не тот fsc, который в %ProgramFiles(x86)%\Microsoft SDKs\F# и так далее, а тот, который в читать дальше.

@темы: root@глупыйпингвин:~#

05:39 

Мегакрендель: заколебарь, жаболекарь, зомболекарь, лежебокарь
В пайтоне синтаксис для аннотаций типов можно использовать так:

@regexCheck('n', 'return')
def binaryPol(n: '[01]+$') -> '[zj][zerojdn ]+[on]$':
   n = re.sub('0', 'zero ', n)
   n = re.sub('1', 'jeden ', n)
   return n.strip()

Теперь binaryPol('10011') вернёт 'jeden zero zero jeden jeden', но binaryPol('10012') выкинет TypeError: [01]+$ can't match 10012.

сам декоратор

Домашнее задание: объясните, почему так делать лучше не надо.

@темы: root@глупыйпингвин:~#

21:34 

Мегакрендель: заколебарь, жаболекарь, зомболекарь, лежебокарь

Вопрос: Встречался ли вам по работе хоть раз логарифм по золотому сечению?
1. А как же 
6  (9.68%)
2. Нет, только натуральный 
3  (4.84%)
3. Нет, только двоичный и десятичный 
3  (4.84%)
4. Разные бывали, но по золотому сечению ни разу 
12  (19.35%)
5. Вообще никакие и никогда 
38  (61.29%)
Всего: 62

@темы: root@глупыйпингвин:~#

16:32 

Потому что гладиолус

Мегакрендель: заколебарь, жаболекарь, зомболекарь, лежебокарь
Рассмотрим фразу из реального разговора:

«В хаскеле [1] == 1 выдаёт ошибку, потому что (==[1]) :: (Eq a, Num a) => [a] -> Bool»

Является ли она грамматически корректным предложением на русском языке? Если нет, то почему?

А само по себе «(==[1]) :: (Eq a, Num a) => [a] -> Bool»?

А само по себе «char (*(*x())[])()»?

@темы: root@глупыйпингвин:~#, превед, языковед

08:43 

Мегакрендель: заколебарь, жаболекарь, зомболекарь, лежебокарь
Случайный факт о коммон лиспе. На нём можно (пожалуйста, не надо) писать вот так:

(TAGBODY
10   (SETF A 0 B 1)
20   (PRINT B)
30   (SETF B (+ A B) A (- B A))
40   (WHEN (< A 100) (GO 20)))

Другой случайный факт о коммон лиспе. Команда (format t "~@{(~(~a~)_~:*~a)~%~:*(~a_~:*~(~a~))~%~:*~}" "O") будет перемигиваться с вами вечно. Если хотите, чтобы не вечно, добавьте перед @ какое-нибудь натуральное число, например, 700.

@темы: root@глупыйпингвин:~#

20:08 

Picolisp quine

Мегакрендель: заколебарь, жаболекарь, зомболекарь, лежебокарь
Квайн на пиколиспе: ('((X) (list X (lit X))) ''((X) (list X (lit X))))

Чуть более длинная версия: ('((X) (list X (cons 'quote X))) ''((X) (list X (cons 'quote X))))

Почему это работает:
'a в пиколиспе значит не (quote a), как в более привычных лиспах, но (quote . a), это раз.
Для описания анонимных функций используется quote, а не lambda, это два.

@темы: root@глупыйпингвин:~#

18:17 

Мегакрендель: заколебарь, жаболекарь, зомболекарь, лежебокарь
Для тех, кто что-то слышал про полноту по Тьюрингу, но хочет немного конкретики.

Ныряем в яму с битумом и там барахтаемся

@темы: root@глупыйпингвин:~#

23:45 

Мегакрендель: заколебарь, жаболекарь, зомболекарь, лежебокарь
Был на сходке местных питонщиков. Видел там такое:

@do
def p():
    yield char("[")
    d = yield digit
    ds = yield many(skip(",").andThen(digit))
    yield char("]")
    yield ret(d + ds)

Причём запись с декоратором do является лишь сахарком для записи с лямбдами и оператором >>.

Знающие хаскель и видевшие парсек да оценят.

* * *


— Как lift по-русски?
— Фабрика прокси-класса!


Не уверен, что правильно, но как минимум забавно.

@темы: root@глупыйпингвин:~#

14:34 

Мегакрендель: заколебарь, жаболекарь, зомболекарь, лежебокарь
Зазырил picolisp.

На первой минуте я обнаружил, что nil не равно NIL, но оба определены. Кстати, (cons nil NIL) выдаёт (915296208). Я знаю, почему так, но вам не скажу, чтобы не нарушать общей загадочности.

На третьей понял, что mapcon ведёт себя совсем как в коммон лиспе (в частности, при неудачном использовании тоже создаёт закольцованный список и вешает интерпретатор).

На пятой — что всерьёз использую слово cadadr.

На седьмой я попробовал повторить в нём одно упражнение из sicp, и интерпретатор вывалился со стектрейсом и STATUS_ACCESS_VIOLATION. Документация говорит, что так и надо: нефиг вызывать нефункции.

Во всём остальном он очень, очень интересный. Посмотрите и впечатлитесь.

@темы: root@глупыйпингвин:~#

05:29 

Мегакрендель: заколебарь, жаболекарь, зомболекарь, лежебокарь
Плохо кодить ночью вместо сна. Нашёл в багтрекере строчку: поискать все целочисленные /2 и заменить на >> 1 для читаемости.

@темы: root@глупыйпингвин:~#

Эх, разум, да ещё разум

главная