You are viewing [info]magicprinc's journal

magicprinc
Когда долго работаешь с чем-то, то многие моменты становятся очевидными.

Однако сегодня задали вопрос, на который, казалось бы, свободно ответит и первоклассник ;-)

Пусть его поезд уже отправляется в последний путь, но он ещё многих переживет - его величество SMS.

Магические SMS константы... полное разоблачение!

Всего в SMS лезет 140 8-bit байт (байты бывают разной битности, 8-bit стал стандартом де-факто).  
Латиница (буквы европейский алфавитов - A-Za-z, умляуты всякие и греческие Ф и П, цифры и всякие знаки +?!.) кодируется 7bit байтами:  140*8/7 = 160  символов в латинице.  
Русские (украинские, японский и другие не европейские языки) кодируются в Unicode/UCS2 двумя 8-bit байтами = 16-bit на Unicode символ: 140/2 = 70 символов в Unicode.

ВАЖНО! Если в чистую и светлую европейскую SMS затесался хоть один "русский мужик" e.g. Hello - где о русская или "прОклятый подарок" от MS Word e.g. типографские ёлочки вместо ", то вся SMS моментально превращается в unicode и латинские буквы также кодируются 16-bit.
Если в SMS на русском затесался латинский символ - не переживайте, его хорошо примут.

К огромному сожалению UTF-8 изобрели поздновато для SMS ;-(


Расчеты выше верны, если текст ЛЕЗЕТ В ОДНУ SMS!

Если мы вылезли за магические 160/70 символов, то SMS превращается в длинную/склеенную.
У нас по прежнему 140 байт, но туда надо ещё впихнуть 6 байт информации для склейки.
* (140-6)*8/7 = 153 латинских символов в случае нескольких SMS на одну SMS, а уже никак не 160!
* (140-6)/2   = 67 Unicode символа.

Итак теперь "всем и так очевидно" как говорили у нас в корпорации, откуда взялись и почему:
Латиница 160/153. Unicode (русский и другие не европейские языки - умпяуты есть в латинице) 70/67.

UPD!
Кодировка GSM != US-ASCII.
В GSM 8-bit байты используются только для данных, но не для текста.

Для текста всего два варианта 7-bit (GSM default alphabet) и 16-bit (Unicode - UCS2 ~ UTF-16BE).

Авторы GSM default alphabet - GSM 03.38 проделали отличную работу и впихнули в 7-bit всё что нужно большинству европейцев. В US-ASCII многих символов из GSM кодировки попросту нет.
Кроме того, позже в GSM добавили escape последовательности с помощью которых кодировка стала содержать более чем 128 символов.

Вот одно из описаний кодировки GSM 03.38 в сети: http://www.dreamfabric.com/sms/default_alphabet.html
Tags:
 
 
magicprinc
Давно лежали ссылки, дошли руки проверить... Классные!

- редактор текста sublimetext.com.

- редактор 'диаграмм' diagram.ly.

- генератор 'диаграмм' yuml.me.

- доступ к удаленному ПК 2.0 LogMeIn.
Tags:
 
 
magicprinc
01 March 2012 @ 09:41 am
Случайно сломал экран на Kindle3 - хрупкие эти e-ink ;-(

Обзвонил несколько ремонтных мастерских - просят за замену экрана 4500р и экранов зачастую в наличии нет.
Наконец нашел dilaxy.ru с ценой 3500р за экран+работа и экран в наличии, плюс расположены недалеко от метро.

Заменили в течении 15 минут.
Спасибо вам ребята.

Экран по ощущениям стал чуть посветлее. Сказали что такое бывает - новые партии лучше предыдущих.

Вообщем надо идти покупать хорошую обложку - основательно повыбирав какую...
Tags:
 
 
magicprinc
12 February 2012 @ 11:27 am
Российской творческой интеллигенции надо не по митингам шляться, не бюджеты киношные пилить, круче чем чиновники бюджет пилят, не снимать низкопробные отстойные уёбищные фильмы, а учится у профессионалов.

Бондарчук и Бекмаметов сосут плача:



И уже классический супер мега хит
Tags:
 
 
 
magicprinc
Пастернака не читал, но мнение имею. См также более ранние хотелки JavaNG.

Чем не нравятся языки Scala и C# (про M$ API уже высказался ранее), так это "всеядностью".
Авторы тащат в эти языки всё что увидят, исповедуя принцип "есть несколько правильных способов сделать одно и тоже".
"Пусть у нас в языке будет всё, и мы автоматом будем самыми крутыми", хотя у всего мира перед глазами есть наглядный пример того, что убирание лишнего, упрощение - делает язык популярным.
Английский язык не имеет родов, падежей, окончаний, слова не изменяются.
Сейчас ребята работают над исправлением бага с произношением, чтобы читалось как пишется (в немецком так и это круто, диктантов "запишите правильно слова, которые я сейчас произнесу" не проводят).

Scala - это вообще Perl 2.0 (собственно она и нравится тем, кому нравится Perl).

C# - "что M$ не делает, а всё равно Visual Basic выходит".

К примеру, в C# есть выходные параметры, параметры по умолчанию и именованные параметры.

Нормальному человеку, не изнасилованному в детстве Visual Basic ничего из выше перечисленного не нужно. В наше время, когда ФП набирает популярность, делать out параметры – подталкивая программиста к написанию функций с побочными эффектами – грех.


Нужно вводить такое в Java или делать язык с такими фичами? НЕТ!

Но немного помочь нормальным людям, упростить их жизнь можно.

Рассмотрим на примере класса X:
class X {
  private int foo;
  private String bar;
  private final boolean readme;
  private Date writeme;
  private byte[] mysecret;
}

Хорошо было бы добавить в стандартную поставку аннотацию в стиле project lombok
@Property(enum NONE, GET, SET, BOTH), которую можно применить к классу и полю (переменной класса).
Класс без такой аннотации или с @Property(NONE) - для полей без аннотаций - ничего не генерирует т.е. обычный класс,
в противном случае задается генерация "по умолчанию" для всех полей класса, которую можно переопределить аннотацией на поле.

@Property(GET) генерирует getter(s) т.е.
/** Getter for –foo javadoc- */
public int getFoo () { return foo;}

@Property(SET) генерирует setter(s) т.е.
/** Setter for  –foo javadoc- */
public void setBar (String _) { bar = _;}

@Property(BOTH) генерирует getter(s) и setter(s).
Разумеется, если поле final – генерируется только getter.

Если есть getter/setter написанный программистом – он не генерируется / не переопределяется компилятором т.е. используется написанный вручную.

@Property(BOTH)
class X {
  private int foo;
  private String bar;
  private final boolean readme;//auto. getter only
  @Property(SET)
  private Date writeme;
  @Property(NONE)
  private byte[] mysecret;
}


Кроме того должна быть поддержка простого обращения к свойствам:
Если есть getter (не важно сгенерированный или написанный вручную), то можно написать v = myx.foo;
Если есть setter, то myx.bar = "test";
Использовать нужно стандартную точку, а не вводить специальные стрелочки и тд.
И конечно всегда нужно иметь возможность вызвать getter/setter по старому z.isReadme().

Как разделить обращение к полю и к getter/setter?
Если перед названием есть объект, то обращение идет к getter/setter, если одиноко название поля - к полю.
class X {
...
void doit () {
  foo = 20;//поле
  this.bar = "";//setBar
}

Ещё приятнее - в дополнение поддержать простую групповую работу с объектом:
x.foo = 17, bar = "test", writeme = getDate();


Также ввести аннотацию @Builder.

@Builder
class X {
...

Генерирует два класса: X c методом builder() и (неявный) X$Builder с методами "название поля"* и build().

X x = X.builder().foo(42).bar("мы внутри X$Builder, после вызова build() получим голый X").writeme(getDate()).build();
Можно указать метод hook в классе X, который вызывается в методе build() на созданном и инициализированном объекте класса X, чтобы он проверил корректность заполнения всех полей.


В итоге:

Выходные параметры заменяются на возврат через значение функции, используя класс со всеми возвращаемыми значениями.
Описать такой класс без расписывания getters с одной аннотацией – просто.

Параметры по умолчанию и именованные параметры заменяются на "Parameter Object".
Описать голый класс с полями (некоторые имеют значение по умолчанию) и аннотацией @Builder очень просто.


@Builder @Property(GET)
class X {
...
}

public X createSpecialCopyOfX (X _) {
  let x = new X();
  x.foo = _.foo*2;
  return x;
}

let x = createSpecialCopyOfX(X.builder().foo(10).bar("test").build());
 
 
magicprinc
Как бы соседу-снизу-курильщику показать, чтобы эта мусорка дымить в окна перестала...

youtube.com/watch?v=fUuIb612C4k

 
 
magicprinc
GWT (Google Web Toolkit) - золотой стандарт, все знают, многим хочется повторить.

Ладно Google начал страдать NIH синдромом и решил изобрести JavaScript (его придумали/сделали не они) http://www.dartlang.org/ 

Но так, чтобы ВСЕ бросились компилировать в JS (включая больных и убогих)...
На 20ом языке начинает пробивать на хаха:
https://github.com/jashkenas/coffee-script/wiki/List-of-languages-that-compile-to-JS
 
 
magicprinc
12 November 2011 @ 07:08 pm

Экспозиционный комплекс Бункер-42 (на Таганке) предлагает экскурсионный тур выходного дня
"Вехи советской эпохи"

Приглашаем вас отправиться в увлекательное путешествие по самым необычным и таинственным местам города Москвы.


http://bunker42.com/index.php?option=com_content&view=article&id=50&Itemid=77&lang=ru
 
 
magicprinc
19 August 2011 @ 05:18 pm
Дочь растет и возникают мысли обучать её, используя современные технологии, такие как компьютер.
Возникает вопрос ПО...
Беглое изучение ПО на развалах и фирменных салонах показало, что:
а) дети никому не нужны
b) если всё покупать, то дешевле нанять гувернантку...
Стал смотреть в сторону Linux и Ко.
Набор ссылок для дальнейшего изучения:

http://linuxforchildren.com/pages/ru/malysham/gsompris.php
http://linuxforchildren.com/pages/ru/malysham/tux-paint.php
http://linuxforchildren.com/pages/ru/malysham/tuxmath.php
http://linuxforchildren.com/pages/ru/malysham/childsplay.php

http://www.qimo4kids.com/

http://www.doudoulinux.org

http://www.altlinux.ru/products/for-developers/children/

http://www.altlinux.ru/products/5th-platform/school-box/



• GCompris (сборник игр, один из лучших)
• Childsplay (еще один сборник игр)
• TuxPaint (граф. редактор)
• TuxMath (арифметика)
• MathWar (арифметика)
• TuxTyping (клавиатурный набор)
• Pysycache (обучение работе с мышью)
• Gamine (рисование мышью для самых маленьких)
• GBrainy (сборник логических игр для детей постарше)
• Linux Letters (обучение маленьких детей словам, англ.)
• LMemory (Memo)


http://www.zhart.ru/software/20-linux-games-top-120 @ playdeb.net (deb http://archive.getdeb.net/ubuntu karmic-getdeb games ; wget -q -O- http://archive.getdeb.net/getdeb-archive.key | sudo apt-key add - )

UPD:
http://www.bam-book.ru/