← All posts tagged code

anton0xf
code Linux nya shell less
СЯУ, что так можно и что я всегда такое хотел: [подсветка синтаксиса всякой фигни при просмотре в less][https://www.gnu.org/software/src-highlite/source-highlight.html#Using-source_002dhighlight-with-less]. 

Правда оно как-то не очень хочет работать совместно с lesspipe, так что я пока так сделал (вместо рекомендованного способа):
> alias hi='src-hilite-lesspipe.sh'
> lesshi() {
>    src-hilite-lesspipe.sh "$@" | less
> }

Там ещё есть вариант его в ~/.lessfilter прописать (его вызывает lesspipe), но что-то оно сходу не завелось.
anton0xf
code cl shit iterate Lisp
обнаружил приличный недостаток в iterate, по сравнению с loop или почти любым другим способом итерации.
в лиспах, благодаря "привязкам", если это вам нужно, можно сколько угодно юзать одно и то же имя в разных контекстах.
например так:
ANTON0XF> (defun test (p)
			(loop for p in p
			   collect p))
TEST
ANTON0XF> (test '(1 2 3))
(1 2 3)
удобно. но теперь давайте попробуем дословный аналог в iterate:
ANTON0XF> (defun test (p)
			(iter (for p in p)
				  (collect p)))
; ...
; caught STYLE-WARNING:
;   The variable P is defined but never used.
; ...
TEST
ANTON0XF> (test '(1 2 3))
NIL
жепа( оно может только так:
ANTON0XF> (defun test (p)
			(iter (for q in p)
				  (collect q)))
TEST
ANTON0XF> (test '(1 2 3))
(1 2 3)
anton0xf
Git code vcs ? programming
нужно, для работы над веткой, сделать некоторое изменение, которое потом, при мердже в основную ветку, надо отменить. при этом желательно иметь вожможность его вернуть, при вовращении к работе над веткой. как это лучше сделать?
пока не придумал ничкго лучше, чем держать патч с этим изменением и применять его при переходе к работе с веткой, но не комитить его. недостаток: при переходе к другим веткам это изменение придется reset'ать, а при возврящении снова накатывать. и сам патч придется где-то отдельно хранить.
можно еще сделать такой комит в начале ветки и отменить его перед мерджем или после него. проблема: лишний мусор в истории.
anton0xf
Git code rebase work programming
чета я многовато времени трачу на "причесывание" коммитов.

алсо, как лучше делать такое?:
A - B - C <- master
 \
  D - E <- foo
       \
        F - G <- bar
==>
A - B - C <- master
         \
          D - E <- foo
	           \
		        F - G <- bar

$ git checkout foo
$ git rebase master
$ git checkout bar
$ git rebase foo
работает, но как-то это не очень..
тем более, что если от D будет идти больше ветвей, то это еще и
муторно
anton0xf
code Linux MySQL shit ?
какого хрена это не работает?
$ mysql -u root -p      
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.1.62-log Gentoo Linux mysql-5.1.62-r1
...
mysql> create user tester@'%' identified by 'tester';
Query OK, 0 rows affected (0.00 sec)

mysql> Bye
$ mysql -u tester -p'tester'
ERROR 1045 (28000): Access denied for user 'tester'@'localhost' (using password: YES)
anton0xf
костыль code Linux xmodmap X
сломалась левая кнопка мыши.
a покупать, срочно, новую радио-мышь
за 1к+ рублей - жаба душит.
так что залечил так:
$ xmodmap -e 'pointer = 0 2 3 4 5 6 7 0 1'
где схема кнопок моей мыши такая:
 _________
/   /4\   \
| 1 |2| 3 |
9   \5/   |
8         |
\_________/

к сожалению X'ы, в принципе, не поддерживают
бинд более одной физической кнопки
на одну виртуальную(
anton0xf
code на_память RESTAS Lisp programming
чтобы в RESTAS получать правильные строки из параметров маршрута,
нужно использовать парсер url-decode из hunchentoot'а.
например так:
(restas:define-route route ("route/:param"
							:parse-vars (list :param #'hunchentoot:url-decode))
  param)
зтот маршрут быдет отзываться на адреса вида "route/бла бла"
(их, ессно, тоже нужно кодировать, если браузер этого сам не делает)
текстом "бла бла" в кодировке по умолчанию (для меня - это utf-8)

при использовании GET-параметров все происходит автоматически,
что меня и запутало немного сначала.
anton0xf
Java code programming
интересная либа/eDSL на java для генерации sql - jOOQ.
например:
Connection c = null;
Table t = new TableImpl("test table");
Factory f = new Factory(c, SQLDialect.MYSQL);
System.out.println(f.select(field("A")).from(t).where(field("b").
    like(value("test")))

напечатает
select A from `test table` where b like 'test'
anton0xf
code Linux sh ?
почему такая фигня работает, как ожидается
(отрабатывает и печатает по мере поступления):
$ while : ; do echo "hi bu-bu" ; sleep 1 ; done | \
	sed -n 's/^hi \([^ ]*\).*$/\1/p
такая тоже:
$ while : ; do echo "hi bu-bu" ; sleep 1 ; done | \
	grep hi

а вот такая нифига не печатает?:
$ while : ; do echo "hi bu-bu" ; sleep 1 ; done | \
	grep hi | sed -n 's/^hi \([^ ]*\).*$/\1/p
anton0xf
code fuck cl Lisp ?
я не понимаю как работает backquote((
разбирал вот такой простой пример
(результат локализации непонимания из макры):

(let ((p 'q))
  `(let ((r 's))
	 `(eq ',r ',',p)))
следуя опрделению в стандарте, путем эквивалентных преобразований,
привел его к тому же виду, в который оно вычисляется. но в голове вся
эта цепочка определенно не держится( и почему здесь нужно именно ',',
я так и не понял

может я просто не понимаю чего-то?