ЦеНеБлог

Програмерство

22 вересня 2014

TeX-інструменти на ЦеНеБлозі

Оскільки це не «справжній» блог, тут я можу собі дозволити все, що забажаю. Цього разу, на сторінці блогу розміщено конвертер формул — математичних та хімічних. Формула вводиться в текстовому форматі на основі TeX, конвертується в зображення, яке можна розміщувати на інших сайтах.

Читати далі...

Автор: Python. Опубліковано 22 вересня 2014 18:45
Категорії: Download, Програмерство

17 липня 2012

(Лінь [])

Написав невеличкий макрос, що дозволяє створювати ліниві послідовності в стилі loop-recur.

    
(defmacro lazy-loop [params & body]
(let [[args argvals] (->> params (partition 2) (apply map list))] `(letfn [(~'lazy-recur [~@args] (lazy-seq ~@body))] (~'lazy-recur ~@argvals))))

Приклад використання:

user=> (lazy-loop [a 5] 
(if (> a 0)
(cons a
(lazy-recur (dec a))))) (5 4 3 2 1)
user=> (lazy-loop [i (range)
m [0 0 1 1 0 1 0 1]]
(if (seq m)
(if (= (first m) 0)
(lazy-recur (rest i) (rest m))
(cons (first i)
(lazy-recur (rest i) (rest m)))))) (2 3 5 7)

lazy-recur — просто ім'я функції для рекурсивного виклику; вимог щодо хвостової позиції нема, але (оскільки результатом lazy-loop має бути або послідовність, або nil) доречно розміщувати його останнім елементом у cons чи concat, що повертається як результат, або в хвостовій позиції.

Автор: Python. Опубліковано 17 липня 2012 12:40
Змінено 17 липня 2012 12:46
Категорії: Clojure, Програмерство

18 квітня 2012

Парне програмування для команди з одного програміста

Кожен, кому доводилось програмувати самому (не для роботи чи диплому, а просто для себе), може розповісти, наскільки це довгий і неефективний процес. І справа навіть не в тому, що один програміст може зробити менше, ніж десять (в чомусь це навіть перевага: ніхто не плутається під ногами, а епохальні речі взагалі часто створювались малими командами чи окремими індивідами) — проблема в відсутності необхідності зробити роботу вчасно. Ну, не написав ти сьогодні рядок коду, не напишеш завтра, через місяць забудеш про свої наміри — що з того? Ніхто тебе не змусить дописувати власні геніальні творіння, та й чи треба?.. А на диску збираються чорновики недописаних фрагментів коду, і збираються роками, чекаючи, коли їх хтось почне колошматити...

Досить. Треба щось робити — або забити на те, що ти програмер, і знайти якесь простіше хоббі, або нарешті змусити себе працювати. Не годувати себе медитаціями в стилі «ти можеш, ти сильний, ти не настільки ледачий» (ти справді ледачий, як і всі люди, якщо ця проблема для тебе є проблемою), не картати себе («О, ти сьогодні дивився в стелю цілий день і цілу ніч, бери й роби, ледащо!»), не морочити собі голову в якийсь інший спосіб. Коротше, треба просто розібратися, щó заважає тобі рухатись, і по можливості усунути цю перешкоду. Методика обходу перешкоди має бути реалістичною. Безглуздо вчити страуса літати, щоб він міг перелетіти через гори, зате варто подумати, як застосувати його біговий скіл, розпланувати маршрут пробігу і т.д.

Читати далі...

Автор: Python. Опубліковано 18 квітня 2012 21:39
Змінено 01 вересня 2012 3:46
Категорії: Clojure, Програмерство, Філософія

« Писемність | | Робота блогу »