Бабушка, смотри, я сделал двач! Войти !bnw Сегодня Клубы
УНЯНЯ. У нас есть немножечко инфы об этом пользователе. Мы знаем, что он понаписал, порекомендовал и даже и то и другое сразу. А ещё у нас есть RSS.
Теги: Клубы:

X86I0R

https://ideone.com/K4ykpG

Наверняка можно сократить раза в полтора, но я тупой.

#X38RAT (1) / @4077 / 150 дней назад

https://i.imgur.com/FBPqS8B.png

Сегодня я принёс вам упражнение для разминки. Попробуем сымитировать что-то подобное реактовским компонентам на питоне. Без использования транспилера. Да, синтаксис будет не html/xml-ный, зато без транспилера — чистый питон. И чтобы всё динамически — ни о каких тегах и атрибутах рендерер не знает, можно использовать любые (то, что class_ отрендерился в class — просто strip´аем андерскоры, если есть, костыль, чтобы использовать зарезервированные слова).

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

Усложнённый вариант — сделать из el1(attr1='value1')['text1', el2(attr2='value2'), 'text2'] такое: el1[attr1:'value1', 'text1', el2[attr2:'value2'], 'text2']. Обращаю внимание, имена атрибутов записаны БЕЗ кавычек.

Очень хотелось бы увидеть решение от маньки, например. Он ведь такой наскилованный чувак, не так ли?

Сорь за код картинкой, лень аплодить + так наглядней ввод и вывод.

#U5GE66 (39+1) / @4077 / 551 день назад

Как я читаю БнВ: https://i.imgur.com/SvRktLr.png

((o={})=>fetch('https://bnw.im/api/show?'+Object.keys(o).reduce((p,c)=>`${p}&${c}=${o[c]}`,'')).then(r=>r.json()).then(j=>j.messages.reverse().forEach(o=>console.log(`${o.clubs.map(e=>'!'+e).join(' ')}${' '.repeat(!!o.clubs.length)}${o.tags.map(e=>'*'+e).join(' ')}${'\n\n'.repeat(!!(o.clubs.length||o.tags.length))}${o.text}\n\n#${o.id} (${o.replycount}${o.recommendations.length?'+'+o.recommendations.length:''}) / @${o.user} / ${new Date(o.date*1000).toLocaleString()}\n\n${'—'.repeat(80)}\n`))))({QUERY_PARAMS_OBJECT})
#O90ZAG (1+2) / @4077 / 615 дней назад

Разблокировал загрузчик? Молодец, FOTA-обновления тебе больше не положены. Но мы всё равно будем напоминать о них каждые полчаса. А чтобы ситуация была ещё более абсурдной, мы сделали уведомления неотключаемыми.

Как я избавился от уведомлений (радикально):

  1. Скачиваем пустой flashable zip (можно и непустой, если удалить из него ненужное).

  2. Пишем updater-script:

ui_print("Delete annoying Updater.apk");
mount("ext4", "EMMC", "/dev/block/mmcblk0p35", "/system");
delete_recursive("/system/priv-app/Updater");
ui_print("*** OK ***");
unmount("/system");
  1. Кладём его в архив в /META-INF/com/google/android

  2. Кладём архив на телефон, перезагружаемся в кастомное рекавери (например, TWRP), шьём, перезагружаемся.

  3. Успех.

// HTC One M7 есличо

#9F8QQ4 (2+1) / @4077 / 654 дня назад

Как почистить фоточки (и не только) от всяких геотегов mat'ом в один (а не в два, как mat-gui) клика:
mat "$@" | sed '/Cleaning/d;1!G;h;$!d' | xargs -0 notify-send 'MAT'

или из какого-нибудь тунара как кастом экшн:
mat %F | sed '/Cleaning/d;s#%d/##;1!G;h;$!d' | xargs -0 notify-send 'MAT'

#A98VAS (1) / @4077 / 754 дня назад

Оперативный ответ на #4EM8F6/KK5

Дунно, не видел в доках, но

echo -e 'class M(object):\n  def __getitem__(self, key):\n    key_type = type(key)\n    if not isinstance(key, tuple): key = (key,)\n    print("M()[{}] => {}   sum: {}".format(", ".join(map(str, key)) if isinstance(key, tuple) else key, key_type, sum(key)))\n\nM()[1]\nM()[1, 2, 3]' | python
M()[1] => <type 'int'>   sum: 1
M()[1, 2, 3] => <type 'tuple'>   sum: 6
#6DL1NT (7) / @4077 / 754 дня назад

TIL object[*keys] → object.__getitem__(keys)

#4EM8F6 (4) / @4077 / 803 дня назад

DeadBeef → Edit → Configure Custom Shell Command → Add

Command:

    exo-open --launch WebBrowser $(curl http://genius.com/search/quick.js?q=$(echo %a %t | sed -nr 's/[^a-z0-9]+/+/igp') | sed -nr '1s#.+\|(.+)\|[0-9]+$#http://genius.com\1#p')

☑ Single Tracks

#5SB2CP (0) / @4077 / 813 дней назад

eval() escape: https://ideone.com/qOQYtO # данный пост опубликован этим eval‘ом

#YY7B9P (3) / @4077 / 837 дней назад

Переписал изотерификатор в однострочник:

cat file.py | python3 -c "print('exec(' + '+'.join('chr(+(not(not())))' if not c else ('chr(+(not()))' if c == 1 else 'chr(' + '+'.join('(not())' for _ in range(c)) + ')') for c in __import__('sys').stdin.read().encode('raw_unicode_escape')) + ')')" | tee output.py
#X0KSKV (4) / @4077 / 849 дней назад

Сегодня я вам принёс изотерификатор питона: https://ideone.com/XHle4T

#NFOMDK (4+1) / @4077 / 850 дней назад
lua ?

!/usr/bin/lua

Кложуры в Луа

local outer = function()
   local var = 'foo'
   local closure = function() print(var) end
   local var = 'bar'
   return closure
end

outer()()

foo

local outer = function()
   local var = 'foo'
   local closure = function() print(var) end
   var = 'bar'
   return closure
end

outer()()

bar

Почему так? В какой момент происходит захват значений?

#2XYOBX (6+1) / @4077 / 872 дня назад

Включаем/выключаем второй монитор по хоткею.
Primary считается первый подключенный в выхлопе xrandr.
Разрешение используется первое сверху (можно и по плюсику искать, но мне и так норм).
По умолчанию второй выход размещается справа от первого, с ключом -l/--left — наоборот.

Какой я велосипед сейчас изобрёл?

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-

    import sys
    import subprocess
    import re
    from itertools import chain


    rex = re.compile('(?P<output>\w+) connected ?(?P<primary>\w+)? (?P<mode_pos>\d+x\d+\+\d+\+\d+)?[^\n]+\n   (?P<mode>\d+x\d+)')
    pos_0_0 = ('--pos', '0x0')


    def call(*cmds):
        cmd = list(chain(('xrandr',), *cmds))
        print(' '.join(cmd))
        subprocess.call(cmd)
        sys.exit(0)

    def calc_pos(output):
        return ('--pos', '{0[0]}x0'.format(output['mode'].split('x')))


    left = '-l' in sys.argv or '--left' in sys.argv
    xrandr = subprocess.check_output(('xrandr', '-q')).decode('utf-8')
    outputs = [mo.groupdict() for mo in rex.finditer(xrandr)]
    if not outputs:
        sys.exit(1)

    primary = outputs[0]
    primary_out = ('--output', primary['output'], '--primary')
    primary_mode = ('--mode', primary['mode'])

    if len(outputs) == 1:
        call(primary_out, primary_mode, pos_0_0)

    secondary = outputs[1]
    secondary_out = ('--output', secondary['output'])

    if secondary['mode_pos']:
        call(primary_out, primary_mode, pos_0_0, secondary_out, ('--off',))

    secondary_mode = ('--mode', secondary['mode'])

    if left:
        primary_pos = calc_pos(secondary)
        secondary_pos = pos_0_0
    else:
        primary_pos = pos_0_0
        secondary_pos = calc_pos(primary)

    call(primary_out, primary_mode, primary_pos, secondary_out, secondary_mode, secondary_pos)
#E1AWWI (3+2) / @4077 / 923 дня назад

Костылим, сегодня мы с тобой костылим…

Копипастим из PRIMARY по хоткею (забиндив на shift-ins, например):

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    import time
    import re
    import subprocess

    primary = subprocess.check_output(('xsel', '-op'))
    if primary:
        time.sleep(0.1)
        subprocess.call(('xdotool', 'keyup', 'shift'))
        for s in re.split('(\n)', primary):
            if s:
                if s == '\n':
                    subprocess.call(('xdotool', 'key', 'KP_Enter'))
                else:
                    subprocess.call(('xdotool', 'type', '--delay', '0', s))
#DVEWBV (14+2) / @4077 / 1014 дней назад

https://greasyfork.org/en/scripts/12963-6nw-button

Юзерскрипт, добавляющий на bnw.im кнопку быстрого переключения на 6nw.im (на самом деле никакого переключения, шестьнв загружается в айфрейме).

Куркума, почини https на 6nw. Иначе сейчас с https://bnw.im получается mixed-content и не работает ни черта.

#W9UYBA (6+2) / @4077 / 1047 дней назад

@krkm , как ты превознемогаешь плато?

#QIYIQ2 (5+1) / @4077 / 1113 дней назад

Выполняю реквест. Самые рекомендуемые бнвачеры (>100 рекоммендов суммарно) за 100 дней:

  1. anonymous           2619 recs  3953 posts     0.66 ratio
  2. krkm                 532 recs   305 posts     1.74 ratio
  3. o01eg                295 recs   494 posts     0.60 ratio
  4. l29ah                266 recs   454 posts     0.59 ratio
  5. goren                252 recs   187 posts     1.35 ratio
  6. komar                249 recs   344 posts     0.72 ratio
  7. hate-engine          208 recs   238 posts     0.87 ratio
  8. proctolog            167 recs   269 posts     0.62 ratio
  9. soko1                154 recs   248 posts     0.62 ratio
 10. anonim               134 recs    65 posts     2.06 ratio
 11. hirthwork            129 recs   307 posts     0.42 ratio
 12. mugiseyebrows        128 recs   131 posts     0.98 ratio
 13. lexszero             118 recs    62 posts     1.90 ratio
 14. ccahnha              111 recs    96 posts     1.16 ratio
 15. tigrch               110 recs   158 posts     0.70 ratio
 16. freeingria           108 recs    45 posts     2.40 ratio
 17. ninesigns            102 recs    94 posts     1.09 ratio

Самые рекомендуемые посты (>= 10 рекоммендов):

#OESTWY  13  dulo_t-34
#07VFJ6  12  krkm
#E1VR6F  12  anonymous
#M3IRHU  11  xenomorph
#FGGBBW  10  quantum
#VDUO4V  10  krkm
#BOH10I  10  krkm
#UC0CXQ  10  krkm
#OR2N72  10  freeingria

весь список

// самый эффективный бнвачер за этот период — инжинер с ратио 6.25 (рекоммендов на пост); ближайшие к нему сосут с показателем 2 с мелочью
// 100 дней — 505 страниц бнвача

#U64IF3 (11+3) / @4077 / 1113 дней назад

ТОП-20 рекомендодателей за 50 дней:

  1.   561  krkm (16.01%)
  2.   431  mugiseyebrows (12.30%)
  3.   331  o01eg (9.44%)
  4.   316  goren (9.02%)
  5.   235  apepe (6.70%)
  6.   166  ninesigns (4.74%)
  7.   130  hirthwork (3.71%)
  8.   116  ccahnha (3.31%)
  9.   100  l29ah (2.85%)
 10.    94  dzhon (2.68%)
 11.    69  zrg (1.97%)
 12.    60  tigrch (1.71%)
 13.    60  ruki (1.71%)
 14.    58  sin-ok (1.65%)
 15.    52  komar_idi_nahuy (1.48%)
 16.    52  komar (1.48%)
 17.    43  naurlaunim (1.23%)
 18.    43  silvery (1.23%)
 19.    39  klava (1.11%)
 20.    34  like-all (0.97%)

весь список

#TYFIDY (16+4) / @4077 / 1114 дней назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.