ГЛАВНАЯ СТРАНИЦА
ДЕКАБРЬ 10, 2014

Photo on 10 12 2014 at 15.15 Декабрь и бытие news

Приветос, дикий пёс,

Как делос?

Вчера Лига Чемпионов не порадовала: Зенит и Ливерпуль вылетели из группы в Лигу Европы с третьих мест, сегодня такую же участь может повторить и ЦСКА, но будем болеть и верить в лучший исход. Ливерпуль опозорился на Энфилде сыграв 1-1 с Базелем, зато Стиви Джи как всегда играл на уровне высочайшем и забил шикарный гол со штрафного, однако партнеры по команде не смогли словить кураж и вырвать победу, хотя моменты были.

Надо бы что-нибудь интересненькое по технологиям написать, но что-то некогда всё. Все еще педалим тот около-футбольный проектик, глядишь в феврале будет выпущена бета. Решил попробовать ionic framework, который основан на phonegap, но со своими дополнительными штучками. Android и iOS в плане. Сайтец на nodejs почти готов.

Прохожу по выходным по часику-два Half Life 2. Достаточно интересно, хотя первая часть, несомненно, была веселей. Но эта тоже на уровне, интересно идти по сюжету, хотя заставочек / демо сцен не так уж и много.

А что с курсом рубля, кстати? Печаль какая-то, как выживать, живя в России, теперь? Надеюсь, правительство проснётся, хочется верить в это.

Давно не смотрел за индексом S&P500, решил вот глянуть — очуметь, растет и растет. Причем очень медленно, как будто наступило время стабилизации экономики США (ведь S&P 500 это в целом оценка экономики штатов на пол года вперед, не?):

Screen Shot 2014 12 10 at 15.40.41 Декабрь и бытие news

А вот акции Apple как выросли! После дробления особенно, уже $100+ на акцию. Чудеса, но в целом Apple очень эффективное предприятие, денежку зарабатывают хорошо, так что логично. Хороший был год, для тех, кто в лонг позициях сидел по акциям.

Ладненько, скоро домой смотреть Лигу Чемпионов, думаю, стоит остановиться на матче за первое место в группе между ПСЖ и Барселоной, вряд ли кто из них хочет сыграть с Реалом, Баварией или Челси на первом этапе плейофф.

Хорошего вечера!

 

НОЯБРЬ 19, 2014

Hi,

Very interesting thing: Java compiler generate pretty clever code when you operate with strings, i.e. when you concatenate two or more Strings JVM creates StringBuilder transparently to a programmer and concatenates passed strings using that builder object and only then assigns the value to resulting string.

So typical interview question «What is more efficient for concatenating strings: ‘plus’ operator on strings or using StringBuilder class?» you can simply answer «both ways are efficient, and actually almost the same». Let’s do some disassembling now to make sure. I was using both Java 1.6 and Java 1.7 to test my statement.

  1. class Str{
  2.   public static void main(String[] args) {
  3.     String s = "first";
  4.     int i = 5;
  5.     String s2 = "second";
  6.  
  7.     String res = s + i + " " + s2;
  8.  
  9.     System.out.println(res);
  10.   }
  11. }

And now bytecode generated using javac (Java 1.7):

Compiled from «Str.java»
  1. class Str {
  2.   Str();
  3.     Code:
  4.        0: aload_0      
  5.        1: invokespecial #1                  // Method java/lang/Object."":()V
  6.        4: return        
  7.  
  8.   public static void main(java.lang.String[]);
  9.     Code:
  10.        0: ldc           #2                  // String first
  11.        2: astore_1      
  12.        3: iconst_5      
  13.        4: istore_2      
  14.        5: ldc           #3                  // String second
  15.        7: astore_3      
  16.        8: new           #4                  // class java/lang/StringBuilder
  17.       11: dup          
  18.       12: invokespecial #5                  // Method java/lang/StringBuilder."":()V
  19.       15: aload_1      
  20.       16: invokevirtual #6                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
  21.       19: iload_2      
  22.       20: invokevirtual #7                  // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
  23.       23: ldc           #8                  // String  
  24.       25: invokevirtual #6                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
  25.       28: aload_3      
  26.       29: invokevirtual #6                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
  27.       32: invokevirtual #9                  // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
  28.       35: astore        4
  29.       37: getstatic     #10                 // Field java/lang/System.out:Ljava/io/PrintStream;
  30.       40: aload         4
  31.       42: invokevirtual #11                 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
  32.       45: return        
  33. }
НОЯБРЬ 14, 2014

Screen Shot 2014 11 13 at 23.00.36 Lottery numbers generator script (bash) %d1%82%d0%b5%d1%85%d0%bd%d0%be%d0%bb%d0%be%d0%b3%d0%b8%d0%b8

Привет,

Решил вот сгенерировать скриптец на баше и поучаствовать в национальной лотерее Великобритании.

#!/bin/bash
  1.  
  2. # Print usage info
  3. function usage() {
  4.   echo "Usage: $0 "
  5.   echo " * lotto   — Lotto"
  6.   echo " * eurom   — Euro Millions"
  7.   echo " * tball   — Thunderball"
  8.   echo " * hotpick — Lotto Hotpicks"
  9.   echo "More info about UK National Lottery visit https://www.national-lottery.co.uk/games/lotto"
  10. }
  11.  
  12. # Check input params
  13. if [ -z "$1" ]; then
  14.   usage
  15.   exit 1
  16. fi
  17.  
  18. type=$1
  19.  
  20. # Generate random number from 1 up to {limit} and print it
  21. function gen_num() {
  22.   limit=$1
  23.   echo -n $[1 + $[ RANDOM % $limit ]]" "
  24. }
  25.  
  26. # Main app
  27. echo -n "Your lucky numbers for $type are: "
  28. case $type in
  29. lotto)
  30.   for i in {1..6}; do gen_num 49; done
  31.   ;;
  32. eurom)
  33.   for i in {1..5}; do gen_num 50; done
  34.   echo -n "+ lucky stars "
  35.   for i in {1..2}; do gen_num 11; done
  36.   ;;
  37. tball)
  38.   for i in {1..5}; do gen_num 39; done
  39.   echo -n "+ thunderball "
  40.   for i in {1..1}; do gen_num 14; done
  41.   ;;
  42. hotpick)
  43.   for i in {1..5}; do gen_num 49; done
  44.   ;;
  45. *)
  46.   usage
  47.   ;;
  48. esac
  49.  
  50. echo ""
  51. echo "Good luck icon smile Lottery numbers generator script (bash) %d1%82%d0%b5%d1%85%d0%bd%d0%be%d0%bb%d0%be%d0%b3%d0%b8%d0%b8 "
ОКТЯБРЬ 28, 2014

valera big head brain Октябрь, а тут пусто   непорядок news

Привет icon smile Октябрь, а тут пусто   непорядок news

Что-то этот октябрь немножечко суровый был. Зацените фоточку, даже голова увеличилась в полтора раза!

Вкратце, Hadoop не может процессить Big Data, суешь ему 1 терабайт и все, даже кластер из 16 нод r3.8xlarge инстансов не помогает. Либо где-то я что-то не так делаю, но даже Amazon EMR тех поддержка говорит, что что-то с хадупом неладное.

Кстати, Андроид девелоперы, не хотите в Лондон? Есть вакансия, готов рассмотреть кандидатов.

Ливерпуль в этом сезоне ужасен icon sad Октябрь, а тут пусто   непорядок news Но что поделаешь, иногда такое бывает. Неплохой обзор про ситуацию в Ливерпуле от картавого, вобщем-то солидарен частично.

Вчера выиграли турнирчик по FIFA 15 в баре в паре с вьетнамским корешом, сыграли неплохо. Ман Сити 5 — 1 ПСЖ в финале.

Ладненько, спишемся позже.

СЕНТЯБРЬ 11, 2014

Hi,

Just a note for myself for fast creating of AWS EMR cluster with Custom JAR job.

  1. #!/bin/bash
  2.  
  3. jobName="MyReportJob"
  4. clusterName="EmrCluster1"
  5. clusterId=""
  6. activeStepStates="—step-states PENDING RUNNING"
  7.  
  8. bucket="s3://emr-test"
  9. region="us-west-2"
  10. instanceType="m1.medium"
  11. instanceNumber=3
  12.  
  13. resdir="resources/"
  14. filesPattern='*.log'
  15.  
  16. jarPath="my-job-1.0-SNAPSHOT-jar-with-dependencies.jar"
  17. jarRename="my-job-1.0-SNAPSHOT-wdeps.jar"
  18. jarRenamePath="/tmp/$jarRename"
  19.  
  20. # Exit script gently
  21. trap "on_trap" SIGHUP SIGINT SIGTERM
  22. function on_trap() {
  23.     echo "Exiting script as of signal…"
  24.     exit 1
  25. }
  26.  
  27. # Run command securely
  28. function do2() {
  29.     echo "Running command: [$*]"
  30.     $*
  31.     res=$?
  32.     if [ $res -gt 0 ]; then
  33.         echo "ERROR: Command execution failed."
  34.         exit $res
  35.     fi
  36. }
  37.  
  38. # Prepare data
  39. function prepare_data() {
  40.     # Clear previous run results
  41.     for i in logs results; do
  42.         do2 aws s3 rm "$bucket/$i/" —recursive
  43.     done
  44.  
  45.     # Upload log files
  46.     for i in $(ls "$resdir"/$filesPattern); do
  47.         do2 aws s3 cp "$i" "$bucket/data/"$(basename "$i" "$resdir")
  48.     done
  49.  
  50.     # Upload Hadoop job
  51.     do2 rm -f "$jarRenamePath"
  52.     do2 cp "$jarPath" "$jarRenamePath"
  53.     do2 aws s3 cp "$jarRenamePath" "$bucket/job/$jarRename"
  54. }
  55.  
  56. # Create EMR Hadoop cluster
  57. function create_cluster() {
  58.     clusterId=$(aws emr list-clusters —active | grep "$clusterName" | awk '{print $2}')
  59.     if [ -z "$clusterId" ]; then
  60.         echo "Creating $clusterName cluster. Doesn't exists yet."
  61.         # Start Hadoop cluster
  62.         do2 aws emr \
  63.         create-cluster \
  64.         —no-auto-terminate \
  65.         —region "$region" \
  66.         —instance-count $instanceNumber \
  67.         —instance-type "$instanceType" \
  68.         —name "$clusterName" \
  69.         —ami-version 3.0.4 \
  70.         —hadoop-version 2.2.0 \
  71.         —log-uri "$bucket/logs"
  72.  
  73.         clusterId=$(aws emr list-clusters —active | grep "$clusterName" | awk '{print $2}')
  74.         if [ -z "$clusterId" ]; then
  75.             echo "ERROR Cannot create $clusterName cluster: Cannot get cluster ID. Try 'aws emr —list-clusters'."
  76.             exit 1
  77.         fi
  78.     else
  79.         echo "Do not create $clusterName cluster as it's already exists."
  80.     fi
  81. }
  82.  
  83. # Run Hadoop job
  84. function run_app() {
  85.     echo "Running job $jobName for $clusterName [$clusterId] cluster…"
  86.  
  87.     if [ -z "$clusterId" ]; then
  88.         echo "ERROR No cluster ID found [$clusterId]. Try 'aws emr list-clusters'."
  89.         exit 1
  90.     fi
  91.  
  92.     # Check for JAR existance
  93.     jarStepId=$(aws emr list-steps —cluster-id "$clusterId" $activeStepStates | grep "$jobName" | awk '{print $3}')
  94.     if [ ! -z $jarStepId ]; then
  95.         echo "WARN Not going to add Custom JAR step $jobName because it's already exists and is in active state. Try 'aws emr list-steps —cluster-id $clusterId $activeStepStates'."
  96.         return
  97.     fi
  98.  
  99.     # Run uploaded job in Hadoop cluster
  100.     do2 aws emr \
  101.     add-steps \
  102.     —cluster-id "$clusterId" \
  103.     —steps \
  104.     Type=CUSTOM_JAR,Name=$jobName,ActionOnFailure=CANCEL_AND_WAIT,Jar=$bucket/job/$jarRename,Args=$bucket/data,$bucket/results
  105.  
  106.     jarStepId=$(aws emr list-steps —cluster-id "$clusterId" $activeStepStates | grep "$jobName" | awk '{print $3}')
  107.     if [ -z $jarStepId ]; then
  108.         echo "ERROR Cannot find/create Custom JAR step $jobName. Try 'aws emr list-steps —cluster-id $clusterId $activeStepStates'."
  109.         exit 2
  110.     fi
  111.  
  112.     echo "Custom JAR $jobName with step ID [$jarStepId] on cluster $clusterName [$clusterId] has been successfully created."
  113. }
  114.  
  115. # Business logic
  116. if [ $1 = "-d" ]; then
  117.     echo "Preparing data for the job(s)…"
  118.     prepare_data
  119. else
  120.     echo "Do not prepare data for the job(s)."
  121. fi
  122.  
  123. create_cluster
  124. run_app
СЕНТЯБРЬ 8, 2014

Мифический котопёс

Мифический котопёс

Идет гулять и есть овёс,

Нагая дама в позе цветка

Позирует в рекламе табака.

Туристы в метро шумны -

Ходят группами и озабочены.

Мужик в костюме и с кейсом -

Неужели едет ранним рейсом?

Кафе забито людьми -

Кто-то пьёт кофе, как мы.

Медведь сидит за ноутбуком -

Отдых со сверхскоростным звуком.

Южный печатает бумаги -

Делает вид, что фиксит баги.

Музыка в наушниках играет,

А кто-то рядом сидит и не понимает.

Страницы:12345...167