Thursday, September 24, 2015

Windows 10 upgrade stucks on Downloading Updates

That's what I had on my laptop. If you have the same issue, open a terminal as administrator and execute the following command to stop "Windows Update Service". You should see your installation continuing.

net stop wuauserv

Activate Windows 7 with your OEM key

Today, I decided to reinstall Windows 7 on my HP Laptop. I never activated it and I lost my original DVD. So I had no choice than install it from an original Windows 7 ISO downloaded on the web.

And that's why I discovered that pre-installed Windows 7 keys cannot be used to activate Windows. So, this is the solution. Open a terminal as administrator and execute the two following commands :

slmgr.vbs -ipk  XXXXX-XXXXX-XXXXX-XXXXX-XXXXX (where XXXX... is your OEM key)
slmgr.vbs -ato

Enjoy!

Tuesday, September 22, 2015

No more to_date in Oracle SQL

You should prefer something like that :

SELECT
  DATE '2015-08-01' AS d,
  TIMESTAMP '2015-08-01 15:30:00' AS ts
FROM DUAL;


This is conform to ISO8601.


Friday, September 18, 2015

Use Google Translate API for FREE

My company subscribed to Google Apps for Education. So, I though that access to Google Translate API would be included in our contract... but, that's not the case :(

Hummm... hummm... let's hack this for free.

Prerequisite is to have a Google account (even a free gmail account). What we will do is the create a sctipt on Google that will use the translate api freely and publish it as a REST web service which has the same JSON output format as the original.

Let's go!


  1. Connect to http://script.google.com and create an empty project.
  2. Copy paste the code below
  3. Publish it as web application
  4. Grant access to the url of your script to anonymous access if needed


var mock = {
  parameter:{
    q:'hello',
    source:'en',
    target:'fr'
  }
};


function doGet(e) {
  e = e || mock;
  
  var sourceText = ''
  if (e.parameter.q){
    sourceText = e.parameter.q;
  }
  
  var sourceLang = 'auto';
  if (e.parameter.source){
    sourceLang = e.parameter.source;
  }

  var targetLang = 'en';
  if (e.parameter.target){
    targetLang = e.parameter.target;
  }
  
  var translatedText = LanguageApp.translate(sourceText, sourceLang, targetLang)
  
  var json = {
    'data': {
      'translations' : [{
        'translatedText' : translatedText
        }]
       }
  };
   
  return ContentService.createTextOutput(JSON.stringify(json)).setMimeType(ContentService.MimeType.JSON);
}


The original Translation API from Google is https://www.googleapis.com/language/translate/v2?q=[encodedText]&target=[language]&source=[language]&key=APIKEY

Your's will be something like https://script.google.com/macros/s/AKfyxxxxx/exec?q=[encodedText]&target=[language]&source=[language]

The output formats of the two REST service are identicals.

Enjoy!


Wednesday, September 09, 2015

The great alternative to JRebel

I'm an old user and addict of JRebel. I started to use it on open source projects and in professional contexts. From the beginning, I've been convinced that the licensing mode was wrong because of its lifetime. Asking for license renewal each year is boring. So, I decided to look for FREE alternative solutions and finally I recently found one.

This solution is efficient for maven projects developed with Eclipse. It is base on :


I tested it with Java 7 & Java 8. I work on web applications that run on Tomcat. I developed wih Spring (IoC), sometimes Hibernate and Vaadin




Hotswap Agent installation consists on the deployment of a patch for your JVM. You just have to download the corresponding patch here : https://github.com/dcevm/dcevm/releases
Then, download the hotswap-agent.jar from here : https://github.com/HotswapProjects/HotswapAgent/releases

Once it is done, it supposes that you run your project with Maven. For example, I use to start my webapp projects with mvn tomcat7:run or mvn jetty:run.  It could be done from Eclipse directly from the context menu. Thus, you will not need Eclipse WTP anymore

The only thing you will have to do is to declare the following parameters to you JVM arguments like this : 

-XXaltjvm=dcevm -javaagent:/home/depellegrin/Applications/hotswap-agent.jar=autoHotswap=true



Now, in your Java console, you will see extra logs like this :


These extra logs show your HotSwap Agent activity. This is helpfull because in some cases, hot reloading doesn't work. It also happens with JRebel, but honestly (and fortunately) in less cases than this free agent.


Dynamic Source Lookup


Next step : the debugger. If you want to hotswap code changes, you also need to debug it. But, then projects are started with Maven in debug mode (Debug As... instead of Run As... ), Eclipse doesn't link the source code with the code which is executed. To fix this problem, just install the Eclipse plugin from the menu Help > Install new software as it is explained in the project's page here : https://github.com/ifedorenko/com.ifedorenko.m2e.sourcelookup.



That's all. I hope you will enjoy your new life with dynamic reloading of code changes and enjoy the benefits of a strongly compiled programming language like Java associated with the flexibility of an interpreted language. 




Thursday, June 25, 2015

Override local changes with Git

For all SVN users like me, Git is great but a little bit more complex than all stuffs. Imagine, you want to get code from your remote repo and override your local changes (everything your commited on your local repo). This can be done in two step :
  1. Reset your local repo with last fetched head : git reset --hard FETCH_HEAD
  2. Then update local repo with remote one and merge changes : git pull
Hope that could save your day! 

Monday, May 18, 2015

Extract JDK 8 on Windows without the installer

That's something useful when you don't have admin rights on your machine. So :

  1. Download the JDK from Oracle (the Windows version of course)
  2. Open the file with the archiver (7-zip) and extract its content
  3. You will get a file tools.zip, extract it in a dedicated folder. This will extract all the jdk files except jar files
  4. Open a command line and go to this folder. Run the following command that will convert all 'pack' files into 'jar' files : for /r %i in (*.pack) do .\bin\unpack200.exe "%i" "%~pi%~ni.jar"
  5. Enjoy your new jdk!

Thursday, May 07, 2015

Clone all your git repositories over ssh with one small script

I worked on this with my colleague Rivo. Usefull when you have many projects (and many repos!)

#!/bin/bash
# Don't forget to install sshpass -> sudo apt-get install sshpass

HOST=[your_server]
USERNAME=[account]
PASSWORD=[password]
ROOT_PATH=[path_of_your_repos_on_server_as_/opt/git] 
PROJECTS=`sshpass -p "$PASSWORD" ssh $USERNAME@$HOST ls -d $ROOT_PATH/*.git | sed -r 's/^.+\///' | sed -r 's/\.git//'`

for prj in $PROJECTS
  do
    rm -rf $prj
    sshpass -p "$PASSWORD" git clone ssh://$USERNAME@$HOST/$ROOT_PATH/$prj.git
  done
exit

Tuesday, May 05, 2015

Dependency management system per language

A great table I found today while surfing :


Source : http://www.git-attitude.fr/2014/12/31/git-submodules/

Wednesday, March 04, 2015

Start Sublime Text 3 from command line (terminal) on MacOS

ln -s "/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl" /usr/local/bin/sublime

Enjoy!

Thursday, February 26, 2015

How to make a grep search on SVN

Want to perform a 'grep' on every files of your subversion repository? Great. Let's have some linux bash fun... Just adapt the following script to your SVN repo structure and enjoy!


#!/bin/bash
 svn ls --username 'alex' --password 'xxx' -r 'HEAD' -R "http://url/svn/repo/" | grep /trunk/ | while read file;
do
   result=`expr match "$file" '.*/$' | cat`
   if [ $result == 0 ]; then  
     result=`svn cat  --username 'alex' --password 'xxx' "http://url/svn/repo/$file" | grep "STRING_TO_FIND" | cat`
     if [ -n "$result" ]; then
       echo "http://url/svn/repo/$file --> $result"
     fi
   fi
done