Shared posts

02 Aug 17:25

Versioning a REST API

by eugenparaschiv

Versioning a REST API - version identifier in the URI or version media types?

21 Jul 18:57

Strange characters in your Web apps? It could be Oracle's Unicode handling.

by jaymeyer

Do you have strange characters in your Web app? Like a reversed question mark? Here's one reason why: Oracle and Unicode. The article breaks down the problem and recommends some solutions.

16 Jul 17:50

Возьмите облигацию: долговые бумаги как альтернатива банковским вкладам

by Тофанюк
Облигации безопаснее депозитов и не менее доходны

Депозит в банке — самый популярный способ размещения средств. Главный аргумент — отсутствие риска, при этом на кредитный риск самого банка клиенты закрывают глаза: успокаивает активное государственное регулирование банковского бизнеса, случаи спасения кредитных организаций, уверенность, что «банку с большим количеством вкладчиков не дадут умереть». 

Читать далее

16 Jul 17:17

Еще одно домашнее облако - BitTorrent Sync

Тема домашнего облака у меня тут не нова и не так давно я писал о вполне достойном представителе этого растущего семейства продуктов Seafile. В подкасте радио-т мы тоже не раз и не два обсуждали подобные темы и подробно упоминали сегодняшнего героя BitTorrent Sync, но вдумчиво на него посмотреть еще раз видимо будет полезно.

На первый взгляд BitTorrent Sync лежит несколько в другой плоскости. Авторы называют его средством безопасной, автоматической синхронизации файлов, но если копнуть глубже то мы найдем тут именно то, что хочется от локального, домашнего облака. Нет, не все, что хотелось на 100%, но очень, очень близко к тому.

Концептуальное описание технологии можно почитать на иностранном языке, но по сути это распределенная система с P2P синхронизацией. Нечто, напоминающее обычные торренты, но гораздо более подходящая для домашне-облачного применения. Программа существует для всего, что я знаю (включая мой любимый RPi) и на всем этом, вероятно, работает. Я пробовал только версии OSX, RPi (ARM) и Linux (i386 и x64), но судя по всему и для остальных систем включая Windows, BitTorrent Sync (aka btsync) работает вполне.

Текущий статус программы мне трудно определить, но видимо это нечто типа экспериментальной бета версии. Я наблюдаю за этим продуктом с апреля 2013 и много и активно с ним экспериментирую. За отчетный период нашлось знатное количество багов и проблем, некоторые из них были абсолютно критические, но эти суровые времена миновали и на сегодня я не вижу ничего такого, что может меня удержать от теплых слов и горячих рекомендаций. Последняя версия на момент написания была 1.1.15 и все, что я тут пишу относится именно к этой версии.

Установка BitTorrent Sync элементарна под любой системой, как впрочем и настройка. Для OSX и Win версий есть простой, но достаточный GUI и минимальная, по типу dropbox, индикация активности. Для прочих версий есть пристойный и полностью функциональный web-ui. Любой каталог в любом месте вашего диска можно добавить в btsync в пару кликов и назначить этому каталогу “Shared secret” (можно ввести руками либо сгенерировать автоматически). Этот shared secret является уникальным ключем к вашему каталогу без знания которого синхронизация невозможна. Все, что btsync передает/принимает защищено этим ключем и AES 256bit шифрованием. Тут наверняка возникнет вопрос о том, насколько надежна подобного рода защита. Действительно, вместо привычного имени и пароля тут вроде только пароль. Кроме того, никаких следов 2х факторной авторизации тут тоже нет, но не смотря на это, степень защищенности велика и случайно или намеренно подобрать ваш Shared secret практически невозможно. На форуме btsync этот вопрос поднимался многократно и может почитать детали тут, или тут или там.

Есть три вида расшаривания - полное, только для чтения и одноразовое в варианте для полного доступа и для чтения. Т.е. не три а целых четыре варианта. С полным видимо все понятно - каждый, у кого есть shared secret полного доступа может делать с данными все, что угодно - добавлять, удалять и менять. Да, и конечно, в каждом расшареном каталоге может быть любой глубины структура, т.е. подкаталоги тоже поддерживаются. И второе - расшареных каталогов может быть больше одного. Не уверен, сколько их может быть максимально, но одна из моих RPi раздает 9 разных каталогов с подкастами.

В варианте “только для чтения” тоже все вполне ожидаемо - вводите read-only shared secret (его можно найти кликнув на Folders/Advanced) и получаете себе копию данных только для чтения. Никакие модификации файлов в этом случае не пройдут и такой способ отлично работает для доставки и “широковещания” контента. Я так, например, раздаю подкасты слушателям и электронные книги у себя в рабочей команде.

Вариант одноразового расшаривания на самом деле интересная штука когда генерируется секрет для одного использования в течении 24 часов. Я пока туманно представляю, зачем оно мне может понадобится, но например, если хочется раздавать/расшаривать нечто и контролировать при этом список раздачи - эти одноразовые секреты наверное будут очень в тему.

Синхронизаця файлов происходит после того, как завершена начальная индексация. Этот процесс для больших каталогов может занять время, однако это несравнимо быстрее подобной процедуры в дропбоксе. Даже самый мелкий из моих компьютеров (RPi) завершил индексациию всех подкастов (около 35Г) меньше чем за час. На нормальном компьютере это конечно происходит гораздо быстрее. После этого все ваши железки начинают делится файлами и поддерживают это домшанее облако в актуальном состоянии.

Скорость передачи зависит от того, сколько участников в вашем личном облаке. Как и при использовании обычных торрентов, тут происходит обмен данными одновременно с многими компьютерами. В моей домашней сети с btsync живут 3 мака и 2 RPi и после добавления файлов на один из них я могу наблюдать как прочие компьютеры начинают получать файлы сначала от источника изменений, а потом, по степени доставки на другие машины в сети, и с этих машин. Т.е. на практике все это работает не просто быстро, но очень быстро. Я не проводил замеров с секундомером в руке, но по ощущениям это все работает сильно быстрее чем через Dropbox.

С точки зрения загрузки CPU и дисковой активности в последних версиях btsync наблюдается постоянное и неуклонное улучшение и на любых, относительно современных компьютерах, активность BitTorrent Sync мало заметна и не мешает нормальной работе. На моем самом старом iMac c2d в режиме ожидания btsync вообще менее 1% cpu, а в режиме синхронизации не более 15-20% от одного ядра. Даже на RPi BitTorrent Sync вполне сносно работает и последние версии позволяют использовать этот мини-компьютер в качестве полноценного участника вашего домашнего облака. Кстати, все подкасты через btsync раздает именно RPi с подключенным внешним диском и справляется с этой задаче на отлично.

Еще пара слов для параноиков. Из btsync можно сделать полностью закрытую систему. Я не помню, как там по умолчанию, но если отключить все “Use …” и “Search …” опции и задать список ваших машинок в “Use predefined hosts” то BitTorrent Sync будет работать совершенно локально не отдавая ничего в злобный и опасный интернет. Но даже если этого всего не сделать, то ваши файлы все равно не окажутся на серверах btsync и, если верить тому что они утверждают, никакие данные из ваших файлов у них не хранятся. По моему мнению, лучше принять меры и со своей стороны если вас очень заботит неприкосновенность данных. Я именно так и поступил для всех персональных данных - отменил все опции выхода в сеть и вообще закрыл доступ btsync в большой мир. Скорее всего, эти меры черезмерны, но мне так спокойней.

Сравнивать BitTorrent Sync с DropBox или Seafile лоб-в-лоб наверное не совсем честно, так как BitTorrent Sync не делает кое-что из того, чем хорош DropBox/Seafile. Тут не возможности послать кому-либо ссылку на конкретный файл в облаке, нет никакой версионности, никакой встроенной работы над общими документами и пока нет мобильного клиента (он в процессе разработки/тестирования). Да, BitTorrent Sync выглядит более узким решением, но я не люблю сложные комбайны и предпочитаю простые решения. Так у меня для быстрого расшаривания используется прелестный CloudApp, а для версионности и резервных копий - Time Machine. Все это прекрасно сосуществует с BitTorrent Sync и не вызывает у меня никаких неудобств, но наоборот - ощущение правильности такого подхода.

Если смотреть на BitTorrent Sync как на инструмент доставки данных, то в умелых руках он может много где пригодится. Люди уже строят вокруг него социальные сети, локальные интранеты, чаты и форумы и прочее разное. Нет никакой проблемы построить на его базе простое, но более чем настоящее облачное хранилище с данными где-то в S3 и бэкапами в Glacier.

Поддержка у BitTorrent Sync очень достойная и с готовностью принимает и реагирует на отчеты об ошибках. Починки выходят быстро, проблемы признаются и ощущается желание разработчиков довести продукт до идеального состояния.

Из плохого (долго думал, что у нас плохо) могу только попенять на то, что в ранних версиях были совершенно чудовищные проблемы которые могли вызвать худшее, что подобные системы могут натворить - потерю данных. Но похоже что эти проблемы в прошлом и последнее время я не нахожу ничего, настолько критичного. Последняя неприятность у меня с btsync произошла буквально пару дней назад, когда я попробовал перейти на самую свежую версию и обнаружил, что из за несовместимости протоколов с моей стороны и со стороны многочисленных получателей подкастов, эта версия может вызывать 100% нагрузку на процессор в некоторых случаях. Меньше чем за 2 дня проблема была решена разработчиками и починка доставлена.

Подводя итог: BitTorrent Sync полностью вытеснил из моей домашней сети прочие программы для построения локальных облаков (Seafile и AeroFS) и начал неуклонный процесс переноса того, что хранилось в DropBox на btsync. Я не форсирую этот процесс и вероятно пока полный переход невозможен (многие мобильные программы удобно интегрированы в dropbox), но видимо мне больше не понадобится платный экаунт и того, что у меня есть в бесплатном, хватит с головой.

15 Jul 20:01

All hyperbole is totally useless

by Seth Godin

Sure, it gets people's attention, but does it change minds?

Hyperbole needs to be hooked up to a story in order for it to make a difference. A story that resonates, that matches our worldview, that holds up to scrutiny.

Hyperbole can open the door, but it doesn't change behavior. Persistent stories that are true, amplified by the tribe... that's what changes behavior.

       
15 Jul 19:31

Craft a Sustainable Career

by Monique Valcour

Imagine crafting a sustainable career for yourself. Year after year, you perform work that makes full use of your skills and challenges you to develop new ones. Your work not only interests you, it gives you a sense of meaning. You enjoy opportunities for learning and development. You work with people who energize you. You are confident that your skills and competencies make you valuable and marketable and that you can access opportunities through your network. You are able to fit your work together with the other things in your life that are important to you, like family, friends, and leisure.

This is a rosy picture, to be sure; some would even call it unattainable. For a taste of what is usually associated with the word career, check out the Urban Dictionary's definition, which characterizes a career as "an affliction whose symptoms are loss of life & liberty, general purpose misery, and resentment towards those who are unaffected" and "a euphemism for 'professional labor camp.'"

The entry is facetious, yet it does point to an undeniable truth: many employees spend the better part of their waking hours engaged in work that gives them nothing more than pay. "The mass of men lead lives of quiet desperation," wrote Henry David Thoreau in Walden in 1854. Today, over two-thirds of employees are disengaged at work, according to a recent Gallup survey of 150,000 workers. Economic stagnation and unequal access to opportunity keep a sustainable career out of reach of many. Even among the socioeconomically privileged, investment in education, hard work, and commitment to a company is no guarantee of career success and fulfillment.

However, there are steps you can take to maximize your chances of enjoying sustainable career success over the long term. Consider the example of Dan, who worked as sales engineer in the late 1990s for a company that developed voice recognition technology — a perfect fit for his background in and passion for linguistics and computer science. A few years later, the firm merged with its chief competitor. While Dan's job title remained unchanged, his responsibilities shifted in an unfavorable direction. Instead of the more creative work of synthesizing customer needs into technical solutions, at which he excelled, he was tasked primarily with developing proposals and statements of work. Not only did this work fail to capitalize on his strengths, it frustrated him and required skills he lacked. Thus, Dan found himself in a common catch-22: wanting to move into a position that would better fit his skills profile and enable him to recapture his outstanding job performance; he faced diminished prospects of mobility within the firm because he was underperforming at his new responsibilities. Furthermore, given the recent merger, this low point occurred at a time when he needed to demonstrate his value to managers from the acquiring company who weren't familiar with his track record.

To craft his career, Dan explored options for performing interesting work that exploited his talents and offered room for career growth while also increasing the value he provided to his company. He scoured the internet for information about other firms in the industry and found that many competitors employed solution architects, a position that didn't exist in his company at the time. Having gained broad experience with the development and deployment of voice recognition solutions in various contexts over the years with his employer, he realized that the solution architect role would both suit his existing skill profile and work preferences while also increasing his impact in the firm and opening up paths for increased learning. In addition, his research suggested that the role would support the company's strategic objective to take a dominant market position in the rapidly-growing market for voice recognition technology in mobile devices.

Using his respected industry knowledge, market insight, and professional network, he developed a proposal to create a solution architect. He explained how the new position could also enhance retention of high-value employees by providing an alternate career path for other sales engineers who were seeking opportunities for growth within the company. He used evidence from performance appraisals and multi-source feedback to demonstrate that his qualifications matched the position's requirements.

Management accepted his proposal and appointed him to the newly created position, an opportunity that kept him learning, engaged, and performing at his peak, which in turn ultimately led to a promotion a few years later. As expected, the role proved valuable for the company, which in turn hired additional solution architects from outside and promoted other employees into the position.

If you'd like to craft your own career, try out these strategies, which I recommend in my career management courses and workshops:


  • Embrace the fact that you are the pilot of your career. No one else has direct access to your ambitions, interests, and values, and no one is going to take you by the hand and help you create a fulfilling career. The more you practice career crafting, the better you get at it.

  • Develop a discipline of identifying and documenting the ways in which you add value to your employer. Spend a few minutes at the end of each week to record what you've learned and accomplished as well as to record feedback received. Just 5-10 minutes of systematic effort weekly will soon yield a rich archive of material that you can use to deepen your self-awareness, hone your career goals, and document your value.

  • Link your accomplishments to your career goals. Discuss your goals with your manager periodically, even if this process is not formalized. Maintain positive, productive relationships with people who can help you to access opportunities.

  • Pay close attention to developments in your industry and to the strategic direction of your firm. Understand your firm's core competencies — the parts of its operation that drive its competitiveness in the marketplace — and make sure that you play a contributing role. Look for ways to get involved in growth areas.

  • Seek opportunities to work with people who energize you. Many of my executive students recount that their biggest career boosts have come from working alongside smart, energetic, connected people who have taken an interest in them. These productive opportunities are much more likely to occur when you actively seek them out.

A sustainable career is dynamic and flexible; it features continuous learning, periodic renewal, the security that comes from employability, and a harmonious fit with your skills, interests, and values. The keys to crafting a sustainable career are knowing yourself — what interests you, what you do best and not so well, what energizes you — and being acutely attuned to the fields and companies you're interested in, so that you can identify places where you can add value. The "follow your passion" self-help industry tends to under-emphasize this key point: all of the self-awareness in the world is of little use if you can't pitch your passion to a buyer. A sustainable career is built upon the ability to show that you can fill a need that someone is willing to pay for. This holds not only when you're starting a business or looking for a new job; it's also an important springboard for refining your current job and your career trajectory to make it more ideal.