Показаны сообщения с ярлыком tips. Показать все сообщения
Показаны сообщения с ярлыком tips. Показать все сообщения

12 мая 2016 г.

Google+-подобные репосты в блоге

Намедни захотелось мне сделать так, чтобы ссылки на страницы, на которые я ссылаюсь в блоге, оформлялись при репосте в социалках типа G+, FB, VK: картинка из статьи, под ней — заголовок статьи, по ним — пара строк текста из начала статьи. Сделать визуальное оформление такого плана не шибко сложно. Главная сложность — обработка содержимого статьи и вычленение из него тех самых составляющих: картинки, заголовка, начала. Это такая себе не тривиальная задача. Чтобы не изобретать велосипедов и использовать готовые решения придумал костыль (а куда без них?). Хотя достаточно удобный и подходит для всех, по крайней мере известных мне, блоговых движков.
  1. В G+ создаем новый пост
  2. вставляем в текст ссылку на нужную статью
  3. дожидаемся пока статья оформится в G+-like style
  4. выделяем готовый блок от картинки до конца текста
  5. копипастим выделенный блок в режиме Compose (не HTML) в предварительно созданный и открытый на редактирование пост в своем блоге.
Получается неплохо. Между своим текстом и скопированным блоком я вставляю HTMLную отбивку HR в HTML режиме. Можно, конечно, какую-то рамку добавлять, но я особого смысла в этом не увидел.
И как бонус (пока по крайней мере) — картинка сохраняется на G+, а не локально в блоге.
Как пример — репост моего вопроса в гуглогруппах на предмет существующей возможности такого оформления постов:


17 февр. 2016 г.

Mac OS (10.11) El Capitan: Запись/чтение на USB диск в NTFS формате

В Mac OS (10.11) El Capitan отвалилась возможность записи на NTFS диски. Короткий серфинг показал, что связано это с тем, что обычно используемый драйвер NTFS-3G стал несовместим с новой осью. Apple по этому поводу не особо переживает, ибо NTFS — вражеская FS. Решение в моем конкретном случае было найдено этой ветке форума на discussions.apple.com. Paragon выпустил для Seagate версию своего NTFS драйвера под Mac OS, совместимую с El Capitan, но поддерживающую только диски Samsung: ссылка. Зато бесплатно. В той же ветке на discussions.apple.com даются ссылки на менее бесплатные или более крякнутые варианты, но их я решил не пробовать, так как бесплатный вариант подошел.

19 янв. 2016 г.

MP3 & MP4 media in Chromium

На одном из проектов столкнулись с тем, что вебвьюхи на основе Chromium не воспроизводят MP3 и MP4 контент. Связано это с вопросами лицензирования, т.к. Chromium — полностью опенсорсный продукт. К сожалению, для себя решения не нашли — пришлось использовать OGG формат для воспроизведения в этом рендерере. Единственное имеющееся решение может быть сделано только на клиентской стороне, что не подходит для случаев, когда мы не можем влиять на браузер пользователя. Заключается оно в добавлении либы с соответствующими демуксерами в сборку браузера. На Github под это есть отдельное описание.

3 нояб. 2015 г.

Оповещение снятия скришота с экрана приложения в iOS

Наткнулся на оповещение UIApplicationUserDidTakeScreenshotNotification, которое приходит от NSNotificationCenter когда пользователь нажал кнопку Home + Power. Приходит оповещение постфактум, но это и логично — чтобы приложение не могло запретить пользователю делать скриншоты. Ютуб бы этим очень стал пользоваться.

1
2
3
4
5
6
7
NSOperationQueue *mainQueue = [NSOperationQueue mainQueue];
[[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationUserDidTakeScreenshotNotification
                                                  object:nil
                                                   queue:mainQueue
                                              usingBlock:^(NSNotification *note) {
                                                 // executes after screenshot
                                              }];

Android предлагает похожее решение:


1
NotificationCenter.getInstance().addObserver(this, NotificationCenter.screenshotTook);

14 авг. 2015 г.

VIM: форматирование JSON

Ну, vim тут, конечно, чисто как лаунчер, но в вордах такого не сделаешь:

:%!python -m json.tool


На выходе получаем отформатированный JSON из каши.

5 июл. 2015 г.

Отменить запрет выделения и копирования текста на веб-странице

Не знаю зачем, но иногда на веб-страницах отключается возможность выделять и копировать текст. Отменить этот странный запрет можно введя в консоли JS:
javascript:
(function(){
  function ats(){
    var styles='*,p,div{user-select:text !important;-moz-user-select:text !important;-webkit-user-select:text !important;}';
    jQuery('head').append(jQuery('<style>').html(styles));
    var allowNormal=function(){
      return true;
    }
    ;
    jQuery('*[onselectstart], *[ondragstart], *[oncontextmenu], #songLyricsDiv').unbind('contextmenu').unbind('selectstart').unbind('dragstart').unbind('mousedown').unbind('mouseup').unbind('click').attr('onselectstart',allowNormal).attr('oncontextmenu',allowNormal).attr('ondragstart',allowNormal);
  }
  function atswp(){
    if(window.jQuery){
      ats();
    }
    else{
      window.setTimeout(atswp,100);
    }
  }
  if(window.jQuery){
    ats();
  }
  else{
    var s=document.createElement('script');
    s.setAttribute('src','http://code.jquery.com/jquery-1.9.1.min.js');
    document.getElementsByTagName('body')[0].appendChild(s);
    atswp();
  }
}
)();
либо просто добавив этот же кусок кода в букмарк, как я описывал в посте "Активные кнопки избранного на панели интернет-обозревателей".
В однострочном варианте он будет выглядеть так:

javascript:(function(){function ats(){var styles='*,p,div{user-select:text !important;-moz-user-select:text !important;-webkit-user-select:text !important;}';jQuery('head').append(jQuery('<style>').html(styles));var allowNormal=function(){return true;};jQuery('*[onselectstart], *[ondragstart], *[oncontextmenu], #songLyricsDiv').unbind('contextmenu').unbind('selectstart').unbind('dragstart').unbind('mousedown').unbind('mouseup').unbind('click').attr('onselectstart',allowNormal).attr('oncontextmenu',allowNormal).attr('ondragstart',allowNormal);}function atswp(){if(window.jQuery){ats();}else{window.setTimeout(atswp,100);}}if(window.jQuery){ats();}else{var s=document.createElement('script');s.setAttribute('src','http://code.jquery.com/jquery-1.9.1.min.js');document.getElementsByTagName('body')[0].appendChild(s);atswp();}})();

3 июн. 2015 г.

Telnet over SSL

Все люди, хоть немного связанные с компьютерами, знают, что для проверки и простейших операций с удаленным хостом можно использовать старый дырявый телнет (ведь правда знают?):

telnet somehost.com 8080
Но иногда нужно подключиться к хосту по SSL (secure) подключению. Тогда можно использовать openssl:
openssl s_client -connect somesite.com:443

11 мая 2015 г.

BetterTouchTool. Расширенные настройки Magic Mouse, Macbook Touch pad и других манипуляторов



Попалась мне на глаза бесплатная утилита BetterTouchTool, расширяющая функциональность многих видов манипуляторов под Mac OS. В окне настроек видны закладки для touchpad, Magic mouse, keyboard, Normal mice, Apple Remote и еще нескольких. Пока я опробовал настройку для встроенного в Macbook touchpad и Magic mouse. Работает.
До этих пор использовал MagicPref, которая используется для того же, но имеет меньше настроек, событий, действий и настраиваемых манипуляторов. Пока переключился на BetterTouchTool.
Обе программки бесплатные. Про BTT сказать пока не могу, но MP работает стабильно и беспокойства не доставляет. Надеюсь новая утилита будет такой же незаметной.

19 мар. 2015 г.

Skype: оформление текста в чате

Skype поддерживает некоторое примитивное оформление текста в окне чата:
StyleExample
boldThis is *bold* text
italicAnd this _italic_
strikethroughAnd ~strikethrough~
plain text inlineAnd inline {code}no text formatting, no emoticons, monospaced{code}
plain text fullAnd full message !! no text formatting, no emoticons, monospaced
no text formattingAnd @@ *no text formatting* but emoticons :D

15 сент. 2014 г.

Mac OS + Midnight Commander

mc (midnight commander) == фактически единственный файловый менеджер, используемый в среде консольных *nix-ов сотоварищи. Ну, кроме command line, конечно. Но и в GUI среде он тоже дает профит. В Mac OS у меня прижился только он, не считая штатного Finder. Установку я делаю из бинарей, взятых тут. Настроек особых он не требует.
Единственное, что я (как и остальные, я думаю) не смогли побороть игнорирование mc клавиши Alt, замененной на маковских клавах на option. Но совсем недавно я таки нашел, чем ее заменить. mc замечательно понимает комбинации:

  • Esc-Enter (Alt-Enter) — скопировать имя файла под курсором в командную строку
  • Esc-h (Alt-h) — история команд
  • Esc-Tab (Alt-Tab) — варианты продолжения набранной команды

11 дек. 2013 г.

Напоминалка по орфографии. Расти, но Рос

Так, напоминалка как писать слова, связанные с ростом и растениями. А то все время забываю.
РАСТИ, но РОС...
Корень рас(т)- пишется в глаголах расти, растить, вырастать, наращать и т.п. и во всех образованных от них словах, например: растение, произрастание, ращение, сращение, возраст и т. п., а также в слове отрасль;
корень рос(т)- пишется в прошедшем времени и в причастиях прошедшего времени от расти, например: рос, росла, росло, росший, вырос, выросший и т. п., а также в словах заросль, поросль, водоросль, недоросль, росток и в образованных от них словах.

9 дек. 2013 г.

Напоминалка: Найти UDID своего iOS-устройства

Простая WEB-напоминалка как узнать UDID у iOS-девайса: http://leftbit.com/findudid/  Не часто нужно, но потому и нужна, что успеваешь забыть, где его искать :)

2 дек. 2013 г.

Tips: Размеры некоторых элементов экрана iPhone/iPad

CGRect rect;

// Get screen dimensions
rect = [[UIScreen mainScreenbounds];
NSLog(@"Bounds: %@", NSStringFromCGRect(rect));

// Get application frame dimensions (basically screen - status bar)
rect = [[UIScreen mainScreenapplicationFrame];
NSLog(@"App Frame: %@"NSStringFromCGRect(rect));

// Get status bar frame dimensions
rect = [[UIApplication sharedApplicationstatusBarFrame];
NSLog(@"Statusbar frame: %@"NSStringFromCGRect(rect));

11 нояб. 2013 г.

SVN: работа с файлами, содержащими "@" в имени

Не первый раз сталкиваюсь с тем, что при работе из командной строки SVN игнорирует правую часть имени файла после символа @. Решается это добавлением после имени файла еще одной собаки @, чтобы SVN знала, что символ @ в имени файла — не последний символ. Например вот так:
svn add somefile@2x.png@

10 нояб. 2013 г.

Однострочники: Макрос получения локализированных строк

Простой Objective-C-макрос для получения строковых ресурсов в зависимости от дефолтной локали
#define LOC(__key__) [[NSBundle mainBundle] localizedStringForKey:(__key__) value:nil table:nil] 

28 сент. 2013 г.

Vim: обрамление выделенного текста другим текстом

Простой регексп для размещения в начале и конце выделенного текста определенных токенов (token1, token2):
:'<,'>s/\%V\(.*\)\%V/token1\1token2)/

24 сент. 2013 г.

Mac OS: Штатная цветовая пипетка (Color picker)

Понадобилось узнать составляющие цвета в окошке программы. Оказалось, что в Mac OS есть штатная утилита DigitalColor Meter. Имеет все, что нужно для периодического определения цвета: разнообразные цветовые модели (RGB, CMYK, etc), отображение в десятичном и хекс форматах, копирование в текста и битмапе. Интересная фишка - кастомный размер пипетки. Если пипетка больше, чем 1 пиксел, выводится усредненный цвет.
Вообще, приятно удивило наличие в стандартном наборе системных утилит шахмат и графопостроителя.

21 сент. 2013 г.

iOS 6.1 standard fonts list

Стндартный набор шрифтов из iOS 6.1

AcademyEngravedLetPlain,
AmericanTypewriter,
AmericanTypewriter-Bold,
AmericanTypewriter-Condensed,
AmericanTypewriter-CondensedBold,
AmericanTypewriter-CondensedLight,
AmericanTypewriter-Light,
AppleColorEmoji,
AppleSDGothicNeo-Bold,
AppleSDGothicNeo-Medium,
Arial-BoldItalicMT,
Arial-BoldMT,
Arial-ItalicMT,
ArialHebrew,
ArialHebrew-Bold,
ArialMT,
ArialRoundedMTBold,
Avenir-Black,
Avenir-BlackOblique,
Avenir-Book,
Avenir-BookOblique,
Avenir-Heavy,
Avenir-HeavyOblique,
Avenir-Light,
Avenir-LightOblique,
Avenir-Medium,
Avenir-MediumOblique,
Avenir-Oblique,
Avenir-Roman,
AvenirNext-Bold,
AvenirNext-BoldItalic,
AvenirNext-DemiBold,
AvenirNext-DemiBoldItalic,
AvenirNext-Heavy,
AvenirNext-HeavyItalic,
AvenirNext-Italic,
AvenirNext-Medium,
AvenirNext-MediumItalic,
AvenirNext-Regular,
AvenirNext-UltraLight,
AvenirNext-UltraLightItalic,
AvenirNextCondensed-Bold,
AvenirNextCondensed-BoldItalic,
AvenirNextCondensed-DemiBold,
AvenirNextCondensed-DemiBoldItalic,
AvenirNextCondensed-Heavy,
AvenirNextCondensed-HeavyItalic,
AvenirNextCondensed-Italic,
AvenirNextCondensed-Medium,
AvenirNextCondensed-MediumItalic,
AvenirNextCondensed-Regular,
AvenirNextCondensed-UltraLight,
AvenirNextCondensed-UltraLightItalic,
BanglaSangamMN,
BanglaSangamMN-Bold,
Baskerville,
Baskerville-Bold,
Baskerville-BoldItalic,
Baskerville-Italic,
Baskerville-SemiBold,
Baskerville-SemiBoldItalic,
BodoniOrnamentsITCTT,
BodoniSvtyTwoITCTT-Bold,
BodoniSvtyTwoITCTT-Book,
BodoniSvtyTwoITCTT-BookIta,
BodoniSvtyTwoOSITCTT-Bold,
BodoniSvtyTwoOSITCTT-Book,
BodoniSvtyTwoOSITCTT-BookIt,
BodoniSvtyTwoSCITCTT-Book
BradleyHandITCTT-Bold,
ChalkboardSE-Bold,
ChalkboardSE-Light,
ChalkboardSE-Regular,
Chalkduster,
Cochin,
Cochin-Bold,
Cochin-BoldItalic,
Cochin-Italic,
Copperplate,
Copperplate-Bold,
Copperplate-Light,
Courier,
Courier-Bold,
Courier-BoldOblique,
Courier-Oblique,
CourierNewPS-BoldItalicMT,
CourierNewPS-BoldMT,
CourierNewPS-ItalicMT,
CourierNewPSMT,
DevanagariSangamMN,
DevanagariSangamMN-Bold,
Didot,
Didot-Bold,
Didot-Italic,
EuphemiaUCAS,
EuphemiaUCAS-Bold,
EuphemiaUCAS-Italic,
Futura-CondensedExtraBold,
Futura-CondensedMedium,
Futura-Medium,
Futura-MediumItalic,
GeezaPro,
GeezaPro-Bold,
Georgia,
Georgia-Bold,
Georgia-BoldItalic,
Georgia-Italic,
GillSans,
GillSans-Bold,
GillSans-BoldItalic,
GillSans-Italic,
GillSans-Light,
GillSans-LightItalic,
GujaratiSangamMN,
GujaratiSangamMN-Bold,
GurmukhiMN,
GurmukhiMN-Bold,
Helvetica,
Helvetica-Bold,
Helvetica-BoldOblique,
Helvetica-Light,
Helvetica-LightOblique,
Helvetica-Oblique,
HelveticaNeue,
HelveticaNeue-Bold,
HelveticaNeue-BoldItalic,
HelveticaNeue-CondensedBlack,
HelveticaNeue-CondensedBold,
HelveticaNeue-Italic,
HelveticaNeue-Light,
HelveticaNeue-LightItalic,
HelveticaNeue-Medium,
HelveticaNeue-UltraLight,
HelveticaNeue-UltraLightItalic,
HiraKakuProN-W3,
HiraKakuProN-W6,
HiraMinProN-W3,
HiraMinProN-W6,
HoeflerText-Black,
HoeflerText-BlackItalic,
HoeflerText-Italic,
HoeflerText-Regular,
Kailasa,
Kailasa-Bold,
KannadaSangamMN,
KannadaSangamMN-Bold,
MalayalamSangamMN,
MalayalamSangamMN-Bold,
Marion-Bold,
Marion-Italic,
Marion-Regular,
MarkerFelt-Thin,
MarkerFelt-Wide,
Noteworthy-Bold,
Noteworthy-Light,
Optima-Bold,
Optima-BoldItalic,
Optima-ExtraBlack,
Optima-Italic,
Optima-Regular,
OriyaSangamMN,
OriyaSangamMN-Bold,
Palatino-Bold,
Palatino-BoldItalic,
Palatino-Italic,
Palatino-Roman,
Papyrus,
Papyrus-Condensed,
PartyLetPlain,
STHeitiSC-Light,
STHeitiSC-Medium,
STHeitiTC-Light,
STHeitiTC-Medium,
SinhalaSangamMN,
SinhalaSangamMN-Bold,
SnellRoundhand,
SnellRoundhand-Black,
SnellRoundhand-Bold,
Symbol,
TamilSangamMN,
TamilSangamMN-Bold,
TeluguSangamMN,
TeluguSangamMN-Bold,
Thonburi,
Thonburi-Bold,
TimesNewRomanPS-BoldItalicMT,
TimesNewRomanPS-BoldMT,
TimesNewRomanPS-ItalicMT,
TimesNewRomanPSMT,
Trebuchet-BoldItalic,
TrebuchetMS,
TrebuchetMS-Bold,
TrebuchetMS-Italic,
Verdana,
Verdana-Bold,
Verdana-BoldItalic,
Verdana-Italic,
ZapfDingbatsITC,
Zapfino

14 апр. 2013 г.

Фантомные обновления в iTunes

Столкнулся с ситуацией, когда iTunes не моем маке показывает, что имеются несколько обновлений купленных приложений. Однако при входе в в раздел скачивания обновлений Apple Store количество обновлений равно нулю или минус то, что показывается iTunes. Какое-то время я не обращал внимания на это различие в показаниях. Но недавно число фантомов увеличилось до 4. Решил разобраться.
Выяснилось вот что. На Новый Год я подарил подруге iPod. Инициализировал я его со своего компа. И ставил несколько программ. Потом ее iPod я отвязал от своей учетки и прописал на нем ее данные. Дальнейшая синхронизация ведется с ее компа. Свой комп я так же деавторизовал от ее учетки. Но эти несколько программок остались в локальном хранилище iTunes. И поэтому программа при проверке наличия обновлений учитывала и эти программы, а Apple Store мне показывал только те, которые куплены на мою учетку.
При очередной синхронизации своего iPhone мне iTunes показала примерно такое окошко:
Это меня и навело на догадку о происхождении фантомов. Открыл список приложений в iTunes, отыскал указанные программки и удалил их оттуда. Фантомы пропали.
В форумах Apple (https://discussions.apple.com/) периодически возникают темы про Phantom updates. Но там четкого ответа я не увидел. А он тут лежит. :)

31 дек. 2012 г.

Дополнительные смайлы в Skype

(smoking) или (ci) — курящий смайл
(bug) — жук
(poolparty) — вечеринка в бассейне
(bandit) — бандит
(drunk) — пьяный смайл
(headbang) — бьётся головой об стену
(mooning) — Демонстрация ягодиц
(rock) — рок
(finger) — показывает cредний палец
(toivo) — мальчик с собакой
(fubar) — тычет пальцем
(swear) — ругается матом
(flag:«2 буквы государства»), например флаг России — (flag:ru)
(skype) — значок скайпа.