Превентабилен рак

Standard

На BBC има вест со наслов “Cancer ‘tidal wave’ on horizon, warns WHO“, вест во која има информација вредна за споделување:

Главни извори на превентабилен рак се:

  • Пушење;
  • Инфекции;
  • Алкохол;
  • Дебелина и неактивност;
  • Радијација (и таа од сонцето и таа од медицински скенирања);
  • Воздушно загадување и други фактори од животната средина;
  • Задоцнето/одложено родителство, имањето помалку деца и не доење.

Во веста има и линк до извештајот од СЗО, но тој не е бесплатен за превземање.

Ако ја видиме приложената илустрација, Македонија спаѓа во земјите каде на 100 илјади луѓе, повеќе од 116 умираат од рак.

Cancer

Што е “crowdfunding”??

Standard

Како што знаеме, стартуваше LetsFundIt.mk, првиот македонски краудфандинг сервис. (Што е краудфандинг?) Се прашувате, што е овој сервис? Уште еден сајт за попусти? Сајт кајшто може да се вложува и инвестира во фирми? Одговорот, е нешто сосема друго…

Меѓу првите успешни сервиси/платформи од овој тип се Kickstarter и Indiegogo. Овие платформи овозможуваат луѓе да придонесат на постоечка кампања или да создадат своја.

Пример

Некој има идеја за нов продукт, да речеме очила за сонце со уникатен дизајн, но никако неможе да најде спонзори или инвеститори во неговата идеја. Следно, тој прави кампања на Кикстартер, снима видео, дава опис за неговата идеја, и се обврзува дека за секој што ќе го поддржи со одредена сума, добива нешто за возврат (т.н. ‘награди’). На пример, за секој што ќе даде над $100 – добива по еден пар очила за сонце. Секој што ќе даде над 200 долари – добива по два пара и благодарница. Итн…

Тука доаѓа основната идеја на овие сервиси, креаторот да види дали неговата идеја е доволно добра и вреди да се реализира. Ако нема одзив на неговата кампања, значи дека не е добра идејата. На овој начин креаторот тоа го открива по безбеден пат: многу полошо е тој директно да вложи свои средства (дури и да се задолжи) – за после тоа да открие дека идејата не е добра и нема да има профит од неа.

Што овие сервиси не се

Овие сервиси не се платформи за вложување средства и инвестирање. Ако придонесете на една камања за некој продукт (или за што и да е кампањата…) – вие добивате ‘награда’. Во зависност од кампањата, креаторот потенцира за кој придонесен износ која награда ја добивате. Ако биде успешна кампањата и тој продукт стане популарен и влезе во сериско производство, вие не добивате никакви проценти од понатамошните продажби. Вие ја добивате ексклузивноста да имате копија од првите верзии на тој продукт.

Грешни поими

На крај, да го сумирам текстов со една забелешка. LetsFundIt.mk копчето кое треба да го кликнат тие што сакаат да придонесат во кампања, го имаат несреќно крстено “Вложи”.

letsfundit

Истото копче во Кикстартер, преведено на македонски е “поддржи го овој проект”

kickstarter

А во Индигого е “придонеси сега”.

indiegogo

Им посакувам успех на LetsFundIt.mk, но за да дојдете до него дечки првин испеглајте ги поимите и текстот низ целиот сервис.


Ви се чита уште? Продолжете во блог постот на Зубер: LetsFundIt може да успее, ако сакаме

#ПредлогКнига: 8 книги за 2014

Standard

Во духот на 12 книги за 2014 од Јан, следува листа од мене, овој пат осум книги. Редоследот е случаен, сите книги ги сметам за еднакво добри за да бидат прочитани.

1. War is a Racket

Dear readers, I first heard of Major General Smedley Butler when I joined the Marines twelve years ago. Hearing of his exploits while in Boot Camp, us recruits all wished we had as much guts as this Demi-God.

— Abe Vigoda “part-time inventor”

Војната е рекет е напишана од американски мајор генерал кој има добиено најмногу одликвања во историјата на Америка во времето кога бил жив. Книгата е опишана како еден од најголемите аргументи против војната и е колекција на есеи. Кажува зошто има војни, кој профитира од нив и кој ја плаќа цената.

2. Founders at Work: Stories of Startups’ Early Days

This is an absolute must read if you’re job, your passion, or both (if you’re lucky) has anything to do with creating technical innovation. “Founders at Work” is a wonderfully meander through the stories of successful company founders – across several decades.

— Thomas Beck

Колекција на солидни интервјуа (вкупно 32 на број) со основачите на едни од најпознатите IT фирми (Apple, Yahoo, GMail, Flickr, Adobe, Fog Creek Software, Firefox, …). 

3. Debt: The First 5,000 Years

One of the year’s most influential books. Graeber situates the emergence of credit within the rise of class society, the destruction of societies based on ‘webs of mutual commitment’ and the constantly implied threat of physical violence that lies behind all social relations based on money.

— Paul Mason, The Guardian

Книгата ја анализира функцијата на данокот низ историјата на човештвото, од нејзиното потекло во античките цивилизации до денешницата. 

4. Thinking, Fast and Slow

An outstandingly clear and precise study of the ‘dual-process’ model of the brain and our embedded self-delusions.

— Galen Strawson, The Guardian

Kahneman provides a detailed, yet accessible, description of the psychological mechanisms involved in making decisions.

— Jacek Debiec, Nature

Книга која ќе не замисли како работи умот, за одлуките кои ги донесуваме и како тие влијаат врз животот.

5. Oil: A Beginner’s Guide

In a fluent, easy style [Smil] delves into the world of oil from its discovery on the ground through to its effect on prices at the petrol pumps, and to its impact on future generations.

— The Good Book Guide

Книга која кажува како се користи нафтата, како се наоѓа, прозиведува и пренесува; кажува за политиките и економијата на нафтата, за социјалните и еколошките проблеми кои ги предизвикува, и колку долго ќе трае. Авторот на книгата доби на популарност пред некое време кога Бил Гејтс посочи дека ги чита неговите книги.

Следно, три новели:

6. The Phoenix Project

This insightful walk through the pain and success of business will trigger deja vu for anyone who has ever run afoul of their complete reliance in their IT organization. I see my own experiences in every stage of the story.

— Dr. Thomas Longstaff, Program Chair, Computer Science, Engineering for Professionals, The Johns Hopkins University.

Новела која опишува една замислена IT компанија, каде што сигурно ќе се пронајдете себеси или некој што го познавате во еден од ликовите. Главниот лик (Бил) добива 90 дена од неговиот шеф (Стив) да го претвори главниот продукт кој го најавува компанијата во успешна приказна. Проектот веќе касни и го има прекорачено буџетот кој бил планиран за негово реализирање. Книгата опишува бројни ситуации  и е полна со информации и совети.  

7. The Circle

Dave Eggers’ new novel asks what would happen if Google was truly evil.

— Aaron Souppouris, The Verge

“The Circle” will be enjoyed (or feared) by those just about to enter the job market, already in up to their neck or those that fear social media in general. As I turn to hit the button that will send this review to various social media, I am already thinking differently about all my smart devices and behavior.

— LTCL

Новела во форма на темна сатира на социјалните медиуми, опишува една замислена IT компанија наречена Circle, која најдобро можеме да си ја претставиме како Facebook и Google заедно во едно. Главниот лик (Мае) се вработува таму и после некое време открива дека не е се така фантастично како што си замислувала.

8. Alif the Unseen

An ambitious, well-told, and wonderful story. Alif the Unseen is one of those novels that has you rushing to find what else the author has written, and eagerly anticipating what she’ll do next.

— Matt Ruff, author of Fool on the Hill and The Mirage

Новела со дејствије во замислена држава во Близок Исток, каде млад хакер (Алиф) од арапско-индиско потекло им помага на неговите клиенти (дисиденти, исламисти и слично) да бидат подалеку од окото на надзорот – притоа обидувајќи се да не навлезе во проблеми самиот.

Салата Македонија

Standard

Последнава година имав прилика неколку пати да одам во Шпанија во Мадрид а со тоа и (во слободно време) да искусам една друга култура.

Едно нешто што ми се допадна многу е што кога се оди на ручек, сите ресторани имаат ‘мени на денот’ (es: Menu del Dia) – кајшто се нудат неколку (најчето по 5) опции за предјадење, главно јадење и десерт. Пример, некоја супа, па риба со гарнир за главно јадење и сладолед за десерт. Овие менија се поевтини (помеѓу 9 – 13 евра во просек во ‘нормални’ ресторани, секако има и поскапи) споредено со другите опции за јадење и секогаш свежи.

И така еден ден на ручек, време дојде за порачување на десерт и кога гледам на менито Салата Македонија (es: Macedonia de frutas, некогаш и Ensalada Macedonia, it: Macedonia di frutta). Си викам ОК, ја порачувам.

Салата Македонија

Салата Македонија

Ми пристигна канче овошна салата. Секако беше убава салатата/десертот, но луѓето што ги прашав никој не знаеше зошто се вика така салатата, секако и јас не можев да им објаснам од каде името.

После некое време, добив одговор дека ова име го добила салатата по Македонија за време на Отоманската империја, кога на територијата на Македонија има македонци, роми, срби, албанци и така натаму. А тоа е отсликано со тоа што има салата во која има најразлични овошја. Тоа е едната теорија.

Другата теорија која е еднакво застапена е дека салатата е именувана по Македонија за време на Александар Македонски, кајшто опфаќала многу нации, раси и култури. И овој ‘коктел’ на мешавини (како и во претходната теорија) е претставен симболично со салатата.

Освен во Шпанија, оваа овошна салата под истото име ја има и во Италија и во многу држави во Латинска Америка (каде може да биде и во комбинација со сладолед).

Салата Македонија во мексикански прирачник

Салата Македонија во мексикански прирачник од 1969та

Од друга страна пак, во Франција истотака постои салата Македонија (fr: Salade Macedoine) само што не е овошна, таа салата кај нас ја викаме ‘Руска Салата’. Во Шпанија оваа салата истотака ја викаат Руска т.д. нема забуни, но концептот е пак ист, најразлични состојки (само зеленчук наместо овошје) измешани во една салата.

Зошто треба да отидам во странство за да го откријам ова незнам, но ете, се надевам некој научи/откри нешто ново со овој блог пост :)

Анализа на кодот на Skycons

Standard

jsВо овој блог пост следи анализа на кодот на Skycons. Тоа е мала JavaScript библиотека која црта анимирани икони за временските состојби, користејќи го HTML5 <canvas> тагот. Се користи во одличниот сервис Forecast.

Кога ќе завршите со читање ќе знаете како се пишува една JS библиотека (притоа не jQuery или node/AMD/CommonJS библиотека, туку нај нај `нормална` библиотека), ќе знаете која и е структурата и може ќе научите и некоја финтица попат :)

Како се користи

Првин да видиме пример како се користи библиотеката:

Дефинираме канвас:

<canvas id="icon1" width="128" height="128"></canvas>

Ја вклучуваме библиотеката во HTML-от. И потоа во JavaScript кодот создаваме инстанца од Skycons

var icons = new Skycons();

и дефинираме која временска состојба да се исцрта за кој канвас и повикуваме нејзино анимирање.

icons.set("icon1", Skycons.RAIN);
icons.play();
Пример: различните икони кои ги нуди, притоа и во различни големини

Пример: различните икони кои ги нуди, притоа и во различни големини

Анализа

Пред да почнеме да го анализираме кодот, може да приметиме дека нуди методи кои се пристапуваат `дирекно` од библиотеката (пр. .RAIN) и методи кои се пристапуваат од инстанцата (пр. .set и .play). Друго за напомена, верзијата на библиотеката која е дел од овој блог пост е со id cec079f77b (нормално е да има и понови/подобрени верзии од библиотеката во иднина). Да почнеме:

Кодот започнува со декларирање на варијабла наречена Skycons

var Skycons;

и притоа не се прави ништо повеќе со неа во овој момент, нема иницијализација. Повеќе за варијабли тука.

Следно, целиот преостанат код се наоѓа во овој блок

(function(global) {

}(this));

и тука ја користиме и варијаблата Skycons. Овој блок се нарекува анонимна самоповикувачка функција, која во нашиот слчај е со аргумент – референца до глобална променлива. Доколку експлицитно не дефинираме – сите функции и варијабли во неа се приватни и нема да може да се пристапат од надвор. Повеќе за анонимни самоповикувачки функции тука, тука и тука.

Во оваа функција прво нешто е изразот “use strict”, што значи дека целата функција се извршува под ‘strict mode’.

"use strict";

Оваа декларација мора да биде на самиот почеток на функцијата. Повеќе за овој мод на работа тука.

Следно се декларираат две варијабли

var requestInterval, cancelInterval;

и после нив има уште една анонимна самоповикувачка функција, во која двете варијабли се употребуваат

(function() {
  var raf = global.requestAnimationFrame       ||
            global.webkitRequestAnimationFrame ||
            global.mozRequestAnimationFrame    ||
            global.oRequestAnimationFrame      ||
            global.msRequestAnimationFrame     ,
      caf = global.cancelAnimationFrame        ||
            global.webkitCancelAnimationFrame  ||
            global.mozCancelAnimationFrame     ||
            global.oCancelAnimationFrame       ||
            global.msCancelAnimationFrame      ;

  if(raf && caf) {
    requestInterval = function(fn, delay) {
      var handle = {value: null};

      function loop() {
        handle.value = raf(loop);
        fn();
      }

      loop();
      return handle;
    };

    cancelInterval = function(handle) {
      caf(handle.value);
    };
  }

  else {
    requestInterval = setInterval;
    cancelInterval = clearInterval;
  }
}());

Во функцијава се дефинираат рамките за анимација и за сопирање на анимацијата и се дефинирани на тој начин што би работеле на сите интернет пребарувачи кои ја подржуваат оваа функционалност. Ова се нарекува RequestAnimationFrame shim, повеќе информации има тука и тука.

Следно има код во коментар (скокаме коментари!) и после него се дефинираат неколку константи (кои како и претходните две варијабли, не се достапни надвор од библиотеката пример кога е инстанцирана – бидејќи се во анонимна самоповикувачка функција).

var KEYFRAME = 500,
    STROKE = 0.08,
    TWO_PI = 2.0 * Math.PI,
    TWO_OVER_SQRT_2 = 2.0 / Math.sqrt(2);

После константите, следуваат функциите за цртање. Функциите се дефинирани на тој начин што може да се ре-искористат за повеќе икони наеднаш. Пример во сите случаи кога иконата за времето има облаче, се повикува истата функција за цртање на тој облак. Да ги разгледаме…

Првата е за цртање на круг.

function circle(ctx, x, y, r) {
  ctx.beginPath();
  ctx.arc(x, y, r, 0, TWO_PI, false);
  ctx.fill();
}

Како параметри се праќаат контекстот, точките x, y и радиусот r. ctx е контекстот земен од канвас елементот и тој нуди методи за цртање најразлични геометриски форми и преку него се цртаат иконите. Но, ако цел код е повици кон ctx ќе има многу повторување и нема да биде читлив, па затоа се овие помошни функции. Повеќе за цртање форми во канвас тука и тука.

Следната функција е за цртање на линија.

function line(ctx, ax, ay, bx, by) {
  ctx.beginPath();
  ctx.moveTo(ax, ay);
  ctx.lineTo(bx, by);
  ctx.stroke();
}

Јасно е дека преку канвасот се дефинира линија од една до друга точка и се исцртува.

Нема да ги опишувам сите овие помошни методи, само ќе ги излистам, можете во библиотеката да видите кои повици кон кои методи од контекстот се искористени.

function puff(ctx, t, cx, cy, rx, ry, rmin, rmax) {...}
function puffs(ctx, t, cx, cy, rx, ry, rmin, rmax) {...}
function cloud(ctx, t, cx, cy, cw, s, color) {...}
function sun(ctx, t, cx, cy, cw, s, color) {...}
function moon(ctx, t, cx, cy, cw, s, color) {...}
function rain(ctx, t, cx, cy, cw, s, color) {...}
function sleet(ctx, t, cx, cy, cw, s, color) {...}
function snow(ctx, t, cx, cy, cw, s, color) {...}
function fogbank(ctx, t, cx, cy, cw, s, color) {...}

Потоа има помошни матрици со броеви за помош на цртањето на анимацијата на ветрот

var WIND_PATHS = [ ...
    ],
    WIND_OFFSETS = [ ...
    ];

И уште две помошни функции

function leaf(ctx, t, x, y, cw, s, color) {...}
function swoosh(ctx, t, cx, cy, cw, s, index, total, color) {...}

Сега почнува интересното.

Skycons = function(opts) {
  this.list     = [];
  this.interval = null;
  this.color    = opts && opts.color ? opts.color : "black";
};

Оваа функција се повикува кога во горниот пример беше извршено new Skyicons(). Опционално може и бојата да се дефинира, пример new Skyicons({"color" : "blue"}). Полето list е листата во која се додаваат канвас елементите при повикување на .add и .set и полето interval се користи во .play и .pause. Повеќе за овие функции кога ќе им дојде редот.

Следни се функциите за временските состојби.

Skycons.CLEAR_DAY = function(ctx, t, color) {
  var w = ctx.canvas.width,
      h = ctx.canvas.height,
      s = Math.min(w, h);

  sun(ctx, t, w * 0.5, h * 0.5, s, s * STROKE, color);
};

Во оваа функција се пресметуваат неколку варијабли во зависност од големината на канвасот, и се повикува помошната функција sun.

Следна функција е

Skycons.CLEAR_NIGHT = function(ctx, t, color) {
  var w = ctx.canvas.width,
      h = ctx.canvas.height,
      s = Math.min(w, h);

  moon(ctx, t, w * 0.5, h * 0.5, s, s * STROKE, color);
};

која е слична на претходната, но на крај ја повикува помошната функција moon.

Во овој стил, следат функциите

Skycons.CLOUDY = function(ctx, t, color) { ... };
Skycons.RAIN = function(ctx, t, color) { ... };
Skycons.SLEET = function(ctx, t, color) { ... };
Skycons.SNOW = function(ctx, t, color) { ... };
Skycons.WIND = function(ctx, t, color) { ... };
Skycons.FOG = function(ctx, t, color) { ... };

Функциите кои се достапни преку инстанцата на Skyicons (add, set, draw, …) се на ред. Следно во кодот е дефиниран блокот

  Skycons.prototype = {
  };

И во него прва е функцијата add

add: function(el, draw) {
  var obj;

  if(typeof el === "string")
    el = document.getElementById(el);

  obj = {
    element: el,
    context: el.getContext("2d"),
    drawing: draw
  };

  this.list.push(obj);
  this.draw(obj, KEYFRAME);
},

Пред да објаснам што прави функцијата, да размислиме зошто оваа е достапна преку инстанцата на Skycons. Тоа е бидејќи е дефинирана преку prototype. Повеќе за prototypes тука и тука.

Во функцијата се креира празна варијабла obj, со getElementById се зема канвас елементот по името (пр. icon1, повеќе инфо тука), се создава објектот, се додава во листата и се повикува за него draw.

Многу важно тука е назначувањето на draw за полето drawing во создавањето на објектот. Да го земеме примерот icons.add(“icon1″, Skycons.CLEAR_DAY); – во obj за полето drawing ја назначуваме функцијата CLEAR_DAY. Во JavaScript можеме функции да праќаме како аргументи на методи и да ги назначуваме на полиња. Повеќе за тоа тука.

Следна е функцијата set

set: function(el, draw) {
  var i;

  if(typeof el === "string")
    el = document.getElementById(el);

  for(i = this.list.length; i--; )
    if(this.list[i].element === el) {
      this.list[i].drawing = draw;
      this.draw(this.list[i], KEYFRAME);
      return;
    }

  this.add(el, draw);
},

Која го прави истото како add, само ако веќе постои објект со такво име на канвасот – го заменува во листата.

Следна функција е remove

remove: function(el) {
  var i;

  if(typeof el === "string")
    el = document.getElementById(el);

  for(i = this.list.length; i--; )
    if(this.list[i].element === el) {
      this.list.splice(i, 1);
      return;
    }
},

Која отстранува објект од листата.

Потоа е функцијата draw

draw: function(obj, time) {
  var canvas = obj.context.canvas;

  obj.context.globalCompositeOperation = 'destination-out';
  obj.context.fillRect(0, 0, canvas.width, canvas.height);
  obj.context.globalCompositeOperation = 'source-over';

  obj.drawing(obj.context, time, this.color);
},

Која се повикува во play функцијата, и како параметри прима објект од листата и време. Првин го зема канвасот, го чисти, и за објектот го повикува методот drawing. А drawing е впрочем еден од методите за времињата, како RAIN, CLOUDY, итн… такада еден од тие методи се извршува соодветно.

Следна е функцијата play

play: function() {
  var self = this;

  this.pause();
  this.interval = requestInterval(function() {
    var now = Date.now(),
        i;

    for(i = self.list.length; i--; )
      self.draw(self.list[i], now);
  }, 1000 / 60);
},

Во неа првин се забележува интересното var self = this; – оваа варијабла self ни помага да чуваме референца до this во случаи кога може контекстот на извршување на this да се менува. Повеќе за тоа тука. Потоа повикуваме pause – функција која ќе ја објасниме следна, и потоа повикуваме requestInterval и во секоја итерација ги итерираме сите објекти во листата и повикуваме исцртување – така ја добиваме анимираноста.

И последната функција, pause

pause: function() {
  var i;

  if(this.interval) {
    cancelInterval(this.interval);
    this.interval = null;
  }
}

Во неа, доколку interval е некогаш дефиниран (што значи доколку е повикано претходно play) се повикува cancelInterval и interval се поставува на null.

Крај на кодот. Структурата на библиотеката графички преставено изгледа вака:

Преглед на структурата на Skycons

Преглед на структурата на Skycons

Сега уште еден коментар. Зошто некои методи се достапни преку Skycons дирекно, а некои преку инстанцата? Затоа што можеме да имаме повеќе икони на една иста веб страна, и не сакаме сите да бидат со исти бои, или некои сакаме да се анимирани а некои статички. На овој начин тоа е возможно.

И тоа е тоа. Доколку имате сугестии, поправки, идеи, надополнувања или било каков коментар – бујрум!

Иднината на оперативните системи

Standard

js+pcОперативните системи се софтвер, кој од сите типови на софтвер, ја има имаат потребата најмногу и најбрзо да се менуваат, да се подобруваат и да бидат во тек со најновите харверски новости но и со посакувањата на крајните корисници – меѓу кои барањата за поголема интуитивност и услужливост.

Очигледно зборувам оперативните системи наменети за “десктоп” машините, за мобилните уреди и таблетите, оние кои имаат најмногу контакт со нас – секојдневните корисници. Во овој пост нема да зборувам за оперативните системи кои се наоѓаат во сателитите, во системите кои не смеат ни за еден момент од времето да потфрлат, во серверите (виртуелизирани или не), во уредите во нулеарните реактори, болниците и слично – тие си заслужуваат посебна дискусија и секако не влегуваат во опсегот на она што сакам да го кажам во следните редови.

Имам мислење дека во период од следните години ќе видиме многу промени во декстоп и мобилните оперативни системи, мислење до кое дојдов поради неодамнешни случувања и трендови.

“Декстоп”

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

  • Windows 8 е достапен за јавноста. Една од главните новости е можноста на развивачите на софтвер да пишуваат апликации во JavaScript – јазик кој едно време доминираше само во веб прелистувачите.
  • KDE корисничката околина која се користи во GNU/Linux оперативните системи со најновите верзии нуди подршка за пишување на апликаиции во QtQuick - кој e базиран на QML што е впрочем декларативен јазик базиран на JavaScript.
  • GNOME корисничката околина која истотака се користи во GNU/Linux оперативните системи најави дека JavaScript ќе биде ‘граѓанин од прв ред’ помеѓу другите веќе постоечки јазици во кои можат да се пишуваат апликации. И не само тоа, туку и ќе биде примарниот избор за оваа цел.
  • Chrome OS
    • Самиот оперативен не нуди стандардни десктоп апликации, туку секоја апликација е впрочем веб апликација и се наоѓа во самостоен прозорец во корисничкиот интерфејс – притоа нудејќи ја илузијата дека е стандардна десктоп апликација. Има неколку типови на апликации кои се достапни во Chrome OS, но – иако се ‘веб’ апликации – нудат можност и за работа и кога нема корисникот пристап до интернет – доколку авторот на таа апликација ги има искористено соодветните можности кои ги нуди Chrome OS за таа функционалност.
    • Друго многу важно, поврзано со Chrome OS е фактот дека Chromebook-от на Samsung е најпродаван лаптоп на Amazon во дадената категорија и доминира во неа веќе неколку месеци и фактот дека Google само што го претстави за продажба премиум Chromebook лаптопот Pixel.
Samsung Chromebook - бестселер во "Best Sellers in Laptop Computers" веќе неколку месеци

Samsung Chromebook – бестселер во “Best Sellers in Laptop Computers” веќе неколку месеци

Chromebook Pixel - ултрапремиум (и ултраскапиот) Chrome OS уред од Google

Chromebook Pixel – ултрапремиум (и ултраскапиот) Chrome OS уред од Google

Ова укажува на неколку трендови:

  • ‘The client side seismic shift’ – кајшто се повеќе декстоп апликации ќе се заменуваат со решенија базирани на JavaScript – кајшто е можно (засега).
  • Ќе дојде времето кога ‘десктоп’ оперативните системи ќе бидат поделени на две категории – да речеме лесни и тешки. Лесни ќе бидат тие како Chrome OS кои се одлични за секојдневните корисници кои саат да поминат време на Facebook, да пратат мејл, да напишат некоја белешка во Google Docs, да слушнат некоја песна на SoundCloud и да прегледаат некој видео стрим или клипче на YouTube. Голем дел од корисниците не прават повеќе од годенаведеното. Потоа, ‘тешките’ оперативни системи ќе доминираат таму кадешто треба повеќе моќ од машината но и по-способни апликации. Тука станува збор за користење на софтвер за обработка на податоци, за аудио и видео творење, за програмирање и за софтвер кој влегува во научни цели.
  • Целото тоа оспособување на развивачите на софтвер да пишуваат апликации во JavaScript ќе доведе до можноста една апликација да има две ‘однесувања’ – доколку е извршена на тешката верзија на оперативниот систем – ќе има повеќе функционалности и соодветно доколку е извршена на лесната верзија – ќе има соодветно помало множество на понудени функционалности. Не сум користел Windows 8 и Windows RT – но мислам дека таму веќе се појавува оваа поделба на некое почетно/површно ниво – некои апликации работат и на двете верзии а некои само на Windows 8.
  • Иако се користи JavaScript – за секој оперативен систем и секоја околина соодветно има специфични JavaScript библиотеки кои служат како интерфејс за комуникација помеѓу веб апликацијата и оперативниот систем (пристап до хардверски функции, пример gps, батерија, телефонски повици, итн…). Ќе дојде времето кога ќе има една библиотека која ќе ја користи развивачот на софтвер – а соодветно за избраниот оперативен систем таа ќе ги корсити специфичните методи од предвидената библиотека за него. Ова донекаде е веќе прикажано со QtQuick – кајшто имаме еден ист код – но можеме да правиме апликации и за Linux и за Windows и OS X – но мојата замисла е дека ова ќе биде и на поголемо ниво.
  • Следствено, софтверот како сервис (SaaS) ќе биде во уште поголем пораст. Отворете го Chrome Web Store и ќе ви стане јасно. И новиот Mozilla Marketplace е знак дека овие времиња доаѓаат.

Некои од точкиве се испреплетуваат/се зависни меѓусебно.

“Мобајл”

Во ова поле, кајшто великаните iOS и Android доминираат и Windows Phone е во пораст, се очекува да имаат конкуренција или годинава или 2014та.

Во горенаведените мобилни оперативни системи нема некои ‘сеизмички’ промени, нови верзии од нив добиваме секои неколку месеци, со нови оптимизации и подобрувања но не некои круцијални промени во корисничкиот интерфејс или ‘под хаубата’ во архитектурата на системот и начинот на кој се пишуваат апликации за него.

Но затоа, во развој се неколку оперативни системи кај кои главна работа која ги разликува од горенаведените е тоа што пишувањето на апликации за нив се врши во веб технологии како HTML, CSS и JavaScript.

Тие се веб технологии, но во овие нови оперативни системи ќе создаваат ‘нативни’ апликации за нив. Пионир во овој тип на мобилни оперативни системи беше webOS – кој падна во рацете на HP и отиде во неповрат. Но затоа има нови играчи:

  • Како Sailfish OS на Jolla - фирма создадена од момците кои си отидоа од Nokia а работеа на MeeGo, Maemo и слично – со еден збор талентирани луѓе. Sailfish користи Qt/QML кој веќе е спомнат во овој блогпост.
  • Друг нов играч е Firefox OS на Mozilla - комплето базиран на веб техологии – кои пред некој месец најавија два ‘девелопер’ телефони во соработка со Telefonica и Geeksphone. А денес најавија и телефони во соработка со LG, Alcatel и други производители.
Една од сликите од најавувањето на Firefox OS (превземено од http://live.theverge.com/firefox-os-mwc-2013-live-blog/ )

Една од сликите од најавувањето на Firefox OS (превземено од http://live.theverge.com/firefox-os-mwc-2013-live-blog/ )

  • Трет е Tizen - труд на Samsung за ваков тип на оперативен систем, и секако ‘план б’ и осигурување на независност од Google и Android.
  • Четврт е Ubuntu за мобилни и Ubuntu за таблети - кој како Jolla – со кориснички интерфејс базиран на Qt и јадрото базирано на GNU/Linux. Веќе се очекува во 2014 да почнат да се продаваат уреди базирани на оваа верзија на Ubuntu, но Firefox OS ги претрка.
  • И да не заборавиме на Plasma Active - трудот на KDE развивачите да направат оперативен систем за таблети кој ги користи иновациите и технологиите кои се достапни во KDE – една од најнапредните кориснички околини. Aпликациите за Active се пишуваат во QML. Веќе има пробни верзии како Kubuntu Active – модифицирана верзија на Kubuntu.

Дали овој нов бран на мобилни оперативни системи ќе создаде промени останува да видиме. Тоа зависи од дали:

  • Секојдневните корисници ќе земат уред базиран на некој од новите оперативни системи;
  • Колку голем “хајп” ќе се создаде и популарност, па да и постоечките (гореспоменати) великани ќе понудат ваков начин на развој на софтвер за нивните оперативни системи;

Доколку има основа, одностно горните зависности се исполнат, ќе доведе до трендови како:

  • оперативни системи базирани на целосно отворени технологии;
  • последните две точки од трендовите кај ‘десктоп’.

Околу овие промени, да не ги заборавиме и веќе постоечките решенија како PhoneGap/Apache Cordova, Titanium, и така натаму, кои веќе овозможуваат користење веб технологии за изработка на мобилни апликации. Доколку имате апликација во Phonegap/Cordova – голема е можноста со лесност во иднина да ја приспособите за горенаведените нови мобилни оперативни системи. Поважниот дел во промените што иднината ги носи е што користењето на овие техологии ќе се извршува на пониско ниво на оперативниот систем од што се случува моментално, со тоа и перформансите ќе бидат подобри од што се моментално.

Уште една мисла за крај: Покрај сите овие промени кои надоаѓаат во софтверот, јасно е дека ќе треба да има промени/надградби и во вештините кои ги поседуваат развивачите на софтвер. Односно да не се само “шлапа” JavaScript туку и да се навлезе во подлабоките концепти и можности кои ги нуди јазикот и да се искористат.

И тоа е тоа, може многу да се навлегува, истражува па и филозофира на темава, но мислам дека има доволно ментална стимулација во постов за да ве замисли.

Доколку забележите некаква грешка, или сакате да го споделите вашето мислење, не се двоумете.