За последнее время скопилось несколько различных мыслей. Надеюсь, какие-то из них покажутся интересными.
Итак, в солянке:
1. Java: что такое
2. Palm Pre: личные впечатления
3. Android: как развернуть сервер на телефоне
4. Интерфейсы: концепция страницы «про нас»
5. Книжки: впечатления от Pragmatic Thinking and Learning: Refactor Your Wetware
1. Java: что такое
Cтатические переменные в Java — глобальны. Все, за исключением одной: ThreadLocal. ThreadLocal — это контейнер, в который можно положить значение, специфическое для текущей нити.
Например, пусть у нас есть статическая переменная
Бонус: если надо построить дерево нитей (кто кого создал), то можно перегрузить функцию
Не так давно мне удалось порабоать с Palm Pre. Palm Pre — это новый телефон от Palm. iPhone killer. На самом деле, телефон оказался очень неплохим. Во-первых, добротно сделаная операционная система: очень приятый интерфейс, особенно радует грамотно реализованый мултитач. Во-вторых, отличный набор тулзов для разработчика. Для тех, кто хочет глубоко интегрироваться с системой (на уровне OS) предоставляется SDK и набор хедеров. Для разработчиков обычных аппов — неплохой набор тулзов и эмулятор. Приложения представляют собой довольно интересный гибрид веб-приложений и нативных методов. Платформа сделана очень developer-friendly.
Говорят, что все в Palm очень гордятся продуктом. С моей точки зрения, есть чем гордится.
На Android, оказывается, можно развернуть сервер. Просто на раз-два.
Там отлично поддерживается ServerSocket. То есть, можно создать нить вот с чем-нибудь таким:
Для того, чтобы это заработало на локальной машинке, надо включить форвадинг портов. Для этого, надо сказать
Удивительно, что всё просто работает из коробки и на эмуляторе, и на настоящих дейвайсах.
Пожалуй, стоит лишь предупредить разработчиков об аккуротном закрытие сокетов,
Вот такая идея: на странице «про нас» поместить общую фотографию всех разработчиков. Обводишь мышкой лицо разработчика, а слева появляется информация о том, чем человек занимался. Ну и, может, форма отправки сообщения. Что-то такое:

Основная идея книжки: те, кто занимается умственным трудом должны развивать не только «software» мозга, но и «hardware» («wetware», в случае человеков). Постоянно учиться, менять сферы деятельности, запоминать новую информацию, не лениться быть любопытным. Эти активности помогут мозгу не прекращать создавать новые нейронные связи и менять существующие.
Более того, автор продвигает интересный тезис: развите мозга может не прекращаться в определённом возрасте. То есть, при желании, с возрастом можно не растерять остроту мышления и способность учиться новому. Напротив, можно развить мозг так, что он будет эффективно усваивть и обрабатывать информацию.
Очень рекомендую: Pragmatic Thinking and Learning: Refactor Your Wetware.
Надеюсь, в моей солянке оказалось достаточно копчёностей, и читатель получил от неё удовольствие.
Итак, в солянке:
1. Java: что такое
ThreadLocal
и InheritableThreadLocal
2. Palm Pre: личные впечатления
3. Android: как развернуть сервер на телефоне
4. Интерфейсы: концепция страницы «про нас»
5. Книжки: впечатления от Pragmatic Thinking and Learning: Refactor Your Wetware
1. Java: что такое ThreadLocal
и InheritableThreadLocal
Cтатические переменные в Java — глобальны. Все, за исключением одной: ThreadLocal. ThreadLocal — это контейнер, в который можно положить значение, специфическое для текущей нити.
Например, пусть у нас есть статическая переменная
Global.threadLocal
. В нити 1 скажем: "Global.threadLocal.set("Thread1")
". В нити 2 попросим: "Global.threadLocal.get()
". И нам вернётся значение по умолчанию, а не «Thread1».InheritableThreadLocal
расширяет концепцию. Он сохраняет значения, установленные в нити, из которой стартовала текущая. Если бы нить 2 была бы создана из нити 1, то Global.inheritableThreadLocal.get()
в нити 2, вернуло бы значение из нити 1.Бонус: если надо построить дерево нитей (кто кого создал), то можно перегрузить функцию
childValue()
класса InheritableThreadLocal
. Она вызывается в точности в момент создания новой нити.2. Palm Pre: личные впечатления

Говорят, что все в Palm очень гордятся продуктом. С моей точки зрения, есть чем гордится.
3. Android: как развернуть сервер на телефоне
На Android, оказывается, можно развернуть сервер. Просто на раз-два.
Там отлично поддерживается ServerSocket. То есть, можно создать нить вот с чем-нибудь таким:
while ( isRunning )
{
// Ждём нового клиента
final Socket socket = serverSocket.accept();
// Есть клиент! Всё ли в порядке?
if ( socket != null && socket.isConnected() )
{
// Обрабатываем клинтский сокет
}
}
* This source code was highlighted with Source Code Highlighter.
Для того, чтобы это заработало на локальной машинке, надо включить форвадинг портов. Для этого, надо сказать
adb forward tcp:12345 tcp:54321
, где 12345 — порт, на котором висит серверный сокет на телефоне, а 54321 — порт локальной машинки. Удивительно, что всё просто работает из коробки и на эмуляторе, и на настоящих дейвайсах.
Пожалуй, стоит лишь предупредить разработчиков об аккуротном закрытие сокетов,
Socket::isClosed()
не всегда адекватно выражает состояние соединения.4. Интерфейсы: концепция страницы «про нас»
Вот такая идея: на странице «про нас» поместить общую фотографию всех разработчиков. Обводишь мышкой лицо разработчика, а слева появляется информация о том, чем человек занимался. Ну и, может, форма отправки сообщения. Что-то такое:

5. Книжки: впечатления от Pragmatic Thinking and Learning: Refactor Your Wetware
Основная идея книжки: те, кто занимается умственным трудом должны развивать не только «software» мозга, но и «hardware» («wetware», в случае человеков). Постоянно учиться, менять сферы деятельности, запоминать новую информацию, не лениться быть любопытным. Эти активности помогут мозгу не прекращать создавать новые нейронные связи и менять существующие.
Более того, автор продвигает интересный тезис: развите мозга может не прекращаться в определённом возрасте. То есть, при желании, с возрастом можно не растерять остроту мышления и способность учиться новому. Напротив, можно развить мозг так, что он будет эффективно усваивть и обрабатывать информацию.
Очень рекомендую: Pragmatic Thinking and Learning: Refactor Your Wetware.
Надеюсь, в моей солянке оказалось достаточно копчёностей, и читатель получил от неё удовольствие.