Follow us

JOKe's Blog

It's about Java and programming.

  • Home
  • Java
  • JavaFX
  • Spring
  • JavaScript
  • About me
  • Contacts
    • via mail
    • twitter
    • facebook


Hello everyone,
in the recent years I didn't had time to actually blog and the reason was not only the lack of time.
The real reason was that personal blogs are no longer this viable as ones were. In the current time most people read medium or ghost or very development aligned websites to get their content.

In the past years when this blog was created dzone.com was actually a blog aggregator, where you put your blog and people can vote for it, in a way similar to reddit. It was AWESOME had a front and backpage and the blog links having a lot of votes sometimes made it to the front page. There was RSS for both pages and it was so so awesome. Javalobby was forum back then.
Now all is over.. dzone is completely different, javalobby doesn't exist and to have a personal blog and just rely only on your twitter or reddit presence is just too much work for a developer.

Also there is something else - blogger(blogspot) is basically very hard to use, it is hard to format code, it does not support markdown, it is some outdated not competing wordpress anymore google product that I believe soon will be canceled....and writing a blog post for development on it is PAIN !!!  (medium.com is pain too btw)

So because of the reasons above I am archiving my blog.

I might post sometimes to http://dev.to which I believe is the best medium alternative for developers blogging right now, it is basically twitter, reddit a like and you can follow me  here https://dev.to/gochev .

Btw basically http://dev.to is like twitter/reddit where a post is a blog post and it supports markdown.
Anyway my twitter is http://twitter.com/gochev and you can keep in touch with me there as well.

Last but not least I am trying to get out of the google ecosystem as more as possible and blogpost is a a start, next steps migrate to Brave browser, Startpage etc.

So long and thanks for all the fish !


The current state of Mongo with NestJS ( and Node) .

Currently you have 3 options to use Mongo with Node (and NestJS).

1) NestJS + Mongoose where maybe the best tutorial I have found is here https://scotch.io/tutorials/building-a-modern-app-using-nestjs-mongodb-and-vuejs the issue is that I hate the fact I had to write the schema definitions and the typescript interfaces. If you are fine with writing everything 2 times ones the Schema and ones the Document as Typescript Interface maybe this is the best way to go.

2) NestJS + TypeORM where you can actually use TypeORM with MongoDB, however I do not recomment this if you want to learn more I would ask you to write this blog post https://medium.com/articode/typeorm-mongodb-review-8855903228b1

3) NestJS + Typegoose - basically what it does is it uses your domain objects to get the schema from them. And this is what this post is all about. There is a lot of documentation how you can achieve that, however I didn't like most of it, it just looked like too much code. On top of that ALL tutorials ALWAYS include using of a DTO class and I don't see a reason to use DTO classes at all in 99% of the cases.

DTOs are great because of many reasons, but none of the tutorials on the internet actually explains why they want DTOs and in fact none of them need DTOs so I would like to write the most easy straightforward NEST + MongoDB + TypeGoose example.

So first of all we will install nestjs cli, NestJS is very, very similar to Angular and even if you dont like angular trust me you will like NestJS. Great beginners tutorial for NestJS you can read here find https://scotch.io/tutorials/getting-started-with-nestjs

So lets start:

npm i -g @nestjs/cli

Then create a NestJS project.

nest new nestjspoc-nest

cd nestjspoc-nest

// start the application using nodemon
npm run start:dev

open browser to localhost:3000 to verify hello world is displayed.

Ok we will create a simple Service and Controller in a Module, lets say our applications will do something with Users and we will want UserModule which will hold the User domain objects, User services and user controllers.

nest generate module user

nest generate service user

nest generate controller user


Now you should have a folder which has UserModule, UserService and UserController.

Which are almost empty.

Nest we will use nestjs-typegoose because it just makes everything even easier.

npm install --save nestjs-typegoose

the typegoose has several peer dependencies so we need to install them as well. The two nestjs dependencies we already have but we need the other two.
"@typegoose/typegoose": "^6.0.0",
"@nestjs/common": "^6.3.1",
"@nestjs/core": "^6.3.1",
"mongoose": "^5.5.13"
Ones done your package.json should look like this:
{
  "name": "nestjspoc",
  "version": "0.0.1",
  "description": "",
  "author": "",
  "license": "MIT",
  "scripts": {
    "prebuild": "rimraf dist",
    "build": "nest build",
    "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
    "start": "nest start",
    "start:dev": "nest start --watch",
    "start:debug": "nest start --debug --watch",
    "start:prod": "node dist/main",
    "lint": "tslint -p tsconfig.json -c tslint.json",
    "test": "jest",
    "test:watch": "jest --watch",
    "test:cov": "jest --coverage",
    "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
    "test:e2e": "jest --config ./test/jest-e2e.json"
  },
  "dependencies": {
    "@nestjs/common": "^6.7.2",
    "@nestjs/core": "^6.7.2",
    "@nestjs/platform-express": "^6.7.2",
    "nestjs-typegoose": "^7.0.0",
    "rimraf": "^3.0.0",
    "rxjs": "^6.5.3",
    "@typegoose/typegoose": "^6.0.0",
    "mongoose": "^5.5.13"
  },
  "devDependencies": {
    "@nestjs/cli": "^6.9.0",
    "@nestjs/schematics": "^6.7.0",
    "@nestjs/testing": "^6.7.1",
    "@types/express": "^4.17.1",
    "@types/jest": "^24.0.18",
    "@types/node": "^12.7.5",
    "@types/supertest": "^2.0.8",
    "jest": "^24.9.0",
    "prettier": "^1.18.2",
    "supertest": "^4.0.2",
    "ts-jest": "^24.1.0",
    "ts-loader": "^6.1.1",
    "ts-node": "^8.4.1",
    "tsconfig-paths": "^3.9.0",
    "tslint": "^5.20.0",
    "typescript": "^3.6.3"
  },
  "jest": {
    "moduleFileExtensions": [
      "js",
      "json",
      "ts"
    ],
    "rootDir": "src",
    "testRegex": ".spec.ts$",
    "transform": {
      "^.+\\.(t|j)s$": "ts-jest"
    },
    "coverageDirectory": "./coverage",
    "testEnvironment": "node"
  }
}
The ones we added manually are in bold.

Well this is the setup, let's write some code.

Create your domain object user in a file user.ts for example :

import {prop, Typegoose} from '@typegoose/typegoose';

export class User extends Typegoose {
    @prop()
    name?: string;
}

You see the @prop() yup you need this. You can learn more about validations and what you can do in the typegoose documentation.

Then lets create or update our UserService class.

import {Injectable} from '@nestjs/common';
import {User} from './domain/user';
import {InjectModel} from 'nestjs-typegoose';
import {ReturnModelType} from '@typegoose/typegoose';

@Injectable()
export class UserService {
    constructor(@InjectModel(User) private readonly userModel: ReturnModelType) {
    }

    async createUser() {
        const user = new this.userModel();
        user.name = 'test nestjs2';
        return await user.save();
    }

    async createCustomUser(user: User) {
        const createdUser = new this.userModel(user);
        return await createdUser.save();
    }

    async listUsers(): Promise {
        return await this.userModel.find().exec();
    }
}

Ok the first magic here is @InjectModel(User) private readonly userModel: ReturnModelType , this will give us a userModel that we can use for our User type.

The createCustomUser and listUsers I believe are clear..

Next update our UserController.
import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}

  @Get()
  getHello(): string {
    return this.appService.getHello();
  }
}


Nothing fancy here, we just inject our Service and we call our two methods.

There are two fancy lines you need to add to your UserModule and AppModule 

On the UserModule add as an imports teh value TypegooseModule.forFeature([User]).
import { Module } from '@nestjs/common';import { UserController } from './user.controller';import { UserService } from './user.service';import {User} from './domain/user';import {TypegooseModule} from 'nestjs-typegoose';
@Module({  imports: [TypegooseModule.forFeature([User])],  controllers: [UserController],  providers: [UserService],})export class UserModule {}



And on the AppModule just Configure TypeGoose MongoDB connection string together with your UserModule (which is already added by the CLI).
import {Module} from '@nestjs/common';
import {AppController} from './app.controller';
import {AppService} from './app.service';
import {UserModule} from './user/user.module';
import {TypegooseModule} from 'nestjs-typegoose';

@Module({
    imports: [TypegooseModule.forRoot('mongodb://localhost:27017/nest'),
        UserModule],
    controllers: [AppController],
    providers: [AppService],
})
export class AppModule {
}


And yes you need MongoDB to be running.

Well that's it!

Create a user:

curl -X POST http://localhost:3000/user/createuser -H 'Content-Type: application/json' -d '{ "name": "Nayden Gochev" }'

And you will receive

{"_id":"5dc00795d9a25df587a1e5f9","name":"Nayden Gochev","__v":0}

Also you can get the currently created users at any time :

curl -X GET http://localhost:3000/user/listusers

What else ? Validation ? Security and Tests of course  ! :), all of this - next time ;) now was the nest time.

the full source code can be download here:
https://github.com/gochev/nest-js-poc-mongodb

About myself:
I am a Java developer with a lot of Spring knowledge, but recently I had to write some JavaScript even if I don't want to, so maybe that explains why I like NestJS, and yes this done in Java and Spring is a lot easier https://github.com/gochev/spring-mvc-poc-mongodb but it is fun with NestJS right ? :)
Hello everyone,

in order to become a Java developer you don't need much ;), however if you start learning everything you probably will be overwhelmed and will focus on the wrong bits and basically will probably give up.


However I have to say DON'T give up. Java is extremely easy language, maybe the easiest to start with, it is the most easy language to understand and to read (in case someone else has written the code) so this is the primary reason why Java is the most commonly used language.

The issue with Java is ones you learn the language and bits of the SDK (Standard Development Kit) you will be overwhelmed by a HUGE number of Libraries and Frameworks, you will not know what to learn and how to combine and how to connect different frameworks in order to have a finished product.

So I hope this guides will give you some direction and by reading and understanding EVERYTHING in this guide you should be more than ready to join some company as a Junior Java Developer. All materials are completely FREE and are far better then any academy or university course and etc.


Why you will choose an Academy or University or Udemy course ? The only reason is if you are lazy. You see in order to understand and start applying something you need to first learn it and then to use it to write something. Most people just read without the writing bit, or try to write before they have learned anything (which is better case then the first in my opinion) but in both cases this creates a huge, HUGE gaps that are usually caught on an interview and basically makes you to fail. Academies and udemy courses help in a way that they explain and repeatedly tells you the same things over and over again and this combined with homeworks and exercises helps. Also especially udemy courses by being very pragmatic and practical will show you a code that otherwise you have to write which helps the lazy people a lot.


Still my advice is first read this if for some reason you see you are lazy and dont write code and dont do exercises and need a push then buy some udemy course for 10 bucks, if this also doesnt help then look for an expensive academy which for me should be the last resort and not the first one.


OK where should I start?


1) The best plays to start are the official Java tutorial (they are a bit outdated but still they are the BEST to start from, I started with them as well back in the 2005 and they have been updated since then but not as much as I would want to)


https://docs.oracle.com/javase/tutorial/




  • Getting Started — An introduction to Java technology and lessons on installing Java development software and using it to create a simple program.
  • Learning the Java Language — Lessons describing the essential concepts and features of the Java Programming Language.
  • Essential Java Classes — Lessons on exceptions, basic input/output, concurrency, regular expressions, and the platform environment.
  • Collections — Lessons on using and extending the Java Collections Framework.
  • Date-Time APIs — How to use the java.time pages to write date and time code.
  • Deployment — How to package applications and applets using JAR files, and deploy them using Java Web Start and Java Plug-in.
  • Custom Networking — An introduction to the Java platform's powerful networking features.
  • Generics — An enhancement to the type system that supports operations on objects of various types while providing compile-time type safety. Note that this lesson is for advanced users. The Java Language trail contains a Generics lesson that is suitable for beginners.
  • Internationalization — An introduction to designing software so that it can be easily adapted (localized) to various languages and regions.
  • JavaBeans — The Java platform's component technology.
  • JDBC Database Access — Introduces an API for connectivity between the Java applications and a wide range of databases and data sources.
  • Reflection — An API that represents ("reflects") the classes, interfaces, and objects in the current Java Virtual Machine.
I would focus only on this topics and I would not read everything. Also on the generics bit do not give up, if you lose the focus half way threw just skip it and continue with it at the end of the list. I actually skipped half of it for at least an year initially and went back an year later to reread it, they are just hard and crazy and messy and hard to learn without practice. 

Ones done I would read some SQL, it is a standard language for querying and storing and manipulating data in relational databases which are widely used and which you already have probably used in the JDBC Database access bit of the links above. So if you want to learn more just read the w3c tutorial https://www.w3schools.com/sql/ 

2) Now you are done with the CORE Java, you know what most University students know about Java, you  know more about Java then any other core course that exists and here is where it gets tricky. You see after this point you have to decide what to do and there are 3 options where I would recommend just 1.
 Option 1 is to become an Android Developer, to write apps for Android and to basically be a Mobile Developer.  Recently Google made Kotlin language first and they announced Flutter where the apps are written in Dart, so I would not advice to go this road. Still if you want to write apps for your mobile android phone start with https://developer.android.com/guide or https://www.tutorialspoint.com/android/
 Option 2 is to become a Java Enterprise Edition developer. I would say this is also risky, first of all Java EE 8 will be the last standard Enterprise Edition version of the Java EE, there will be Jakarta EE 9 which is a non standard, eclipse foundation lead endeavour to continue the development and innovation in the Java Enterprise Edition, however no one knows how used Jakarta EE will be, also even this days the Java EE is not that used so I would simply ignore this option If I were you, at least for now.
 Option 3 is to become Desktop developer, however the Java desktop apps are dead and I would not bother with them, you have several options SWT, Swing and JavaFX but none of them is used that much, there are no many jobs in the area and I would not recommend you to go there.
 Option 4 This is the ONLY option you have. You see currently 90% of Java developers are writing Web applications in the enterprise space which uses Spring Frameworks and parts of the Java EE which parts are focused on the web side of things. 

The guide and links and tutorials look like this:
https://www.journaldev.com/1854/java-web-application-tutorial-for-beginners is a nice start for writing web apps.
https://docs.spring.io/spring/docs/4.3.16.RELEASE/spring-framework-reference/htmlsingle/ the spring reference guide is amazing but keep in mind you don't need all from it.
I would read everything from the beginning to the Aspect Oriented Programming (AOP) part.

Then I will jump  to testing https://docs.spring.io/spring/docs/4.3.16.RELEASE/spring-framework-reference/htmlsingle/#testing 

Ones finished with testing I would start with Data Access: https://docs.spring.io/spring/docs/4.3.16.RELEASE/spring-framework-reference/htmlsingle/#spring-data-tier 

Now you should be able to build a non web spring application but you will need Spring web after that
https://docs.spring.io/spring/docs/4.3.16.RELEASE/spring-framework-reference/htmlsingle/#spring-web 
For the view layer I would read only JSP https://docs.spring.io/spring/docs/4.3.16.RELEASE/spring-framework-reference/htmlsingle/#view-jsp  why ? Because most companies even today still uses JSPs for their views and not thymeleaf or etc. So if you need a SERVER SIDE rendering this is the way to go, otherwise you will do a JavaScript client side rendering but this is not for Java Developers to work on, so the JSPs views are completely fine for a Junior developer.
Voala thats all I would also read about JSP Expression Language and JSTL https://www.tutorialspoint.com/jsp/jsp_expression_language.htm which are heavilly used in a the  JSPs.
Thats all, in reality it should not take you more than a month to read it all, you should have created several examples and projects with this technologies and highly recommend to push them all in github.com . This days no one is actually reading your CV, most people just check what you have written in github especially for Junior Developers. And yes you will need git in order to push and publish your projects for the world to see https://git-scm.com/book/en/v1/Getting-Started-Git-Basics

That's all folks. I hope this will be helpful for some of you.


Linux


Download multiple Java versions and put them into /opt/ If you already have some JDK from ubuntu repo or etc not a big deal, just fix the paths bellow

  • Register them as alternatives


sudo update-alternatives --install /usr/bin/java java /opt/java-8-oracle/bin/java 1081


sudo update-alternatives --install /usr/bin/java java /opt/sap-machine-jdk-11.0.3/bin/java 1080


  • Edit your ~/.bashrc file


alias java11='sudo update-alternatives --set java /opt/sapmachine-jdk-11.0.3/bin/java;export JAVA_HOME=/opt/sapmachine-jdk-11.0.3/'

alias java8='sudo update-alternatives --set java /opt/java-8-oracle/bin/java;export JAVA_HOME=/usr/lib/java-8-oracle/'


  • SAVE and start a new bash terminal

execute

java8 to use java8


java11 to use java11

the latest version you have set stays as system wide, but the JAVA_HOME is not :( you can put java8 or java11 as a last line in the bashrc but since it is sudo it will always require password when start and is not great ;(

Mac


  • Install homebrew, since it rox !


  • Install Oracle Java 8 or OpenJDK 8.


I recommend adoptopenjdk

brew tap adoptopenjdk/openjdk


brew search adoptopenjdk


brew cask install adoptopenjdk8


brew cask install adoptopenjdk11


On mac since it RULZ you have a java_home executable (that changes and fixes both your path and your JAVA_HOME) , so the .bashrc changes are easy !


  • Edit your ~/.bashrc file



export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)

export JAVA_11_HOME=$(/usr/libexec/java_home -v11)

alias java8='export JAVA_HOME=$JAVA_8_HOME'
alias java11='export JAVA_HOME=$JAVA_11_HOME'

java8

Note: the latest execution of java8 is to make it system wide by default


  • SAVE and start a new bash terminal


execute

java8 to use java8


java11 to use java11


Windows

Use a normal OS or suffer :)
As a follow up of the http://gochev.blogspot.com/2019/04/convert-pfx-certificate-to-jks-p12-crt.html we now have a keystore and a truststore (if anyone needs) and we will use this keystore to send client side authentication using Spring's RestTemplate .

First copy your keystore.jks and truststore.jks in your classpath, no one wants absolute paths right ?:)

Again a reminder The difference between truststore and keystore if you are not aware is(quote from the JSSE ref guide): 
TrustManager: Determines whether the remote authentication credentials (and thus the connection) should be trusted.
KeyManager: Determines which authentication credentials to send to the remote host.

The magic happens in the creation of SSLContext. Keep in mind the Spring Boot have a nice RestTemplateBuilder but I will not gonna use it, because someone of you might have an older version or like me, might just use a plain old amazing Spring.

If you just want to use the keystore:

final String allPassword = "123456";
SSLContext sslContext = SSLContextBuilder
                .create()
                .loadKeyMaterial(ResourceUtils.getFile("classpath:keystore.jks"),
                                    allPassword.toCharArray(), allPassword.toCharArray())
                .build();

if you just want to use the truststore

final String allPassword = "123456";
SSLContext sslContext = SSLContextBuilder
                .create()
                .loadTrustMaterial(ResourceUtils.getFile("classpath:truststore.jks"), allPassword.toCharArray())
                .build();

I guess you know how to use both ;), if you want to IGNORE the truststore certificate checking and trust ALL certificates (might be handy for testing purposes and localhost)

final String allPassword = "123456";
TrustStrategy acceptingTrustStrategy = (X509Certificate[] chain, String authType) -> true;
SSLContext sslContext = SSLContextBuilder
                .create()
                .loadTrustMaterial(ResourceUtils.getFile("classpath:truststore.jks"), allPassword.toCharArray())
                .loadTrustMaterial(null, acceptingTrustStrategy) //accept all
                .build();


Ones you have the sslContext you simply do :

HttpClient client = HttpClients.custom()
                                .setSSLContext(sslContext)
                                .build();

HttpComponentsClientHttpRequestFactory requestFactory =
                new HttpComponentsClientHttpRequestFactory();

requestFactory.setHttpClient(client);

RestTemplate restTemplate = new RestTemplate(requestFactory);

return restTemplate;

And Voala, now each time you make a get/post or exchange with your restTemplate you will send the client side certificate.

Full example (the "tests" version) that sends client side certificate and ignores the SSL certificate



private RestTemplate getRestTemplateClientAuthentication()
                throws IOException, UnrecoverableKeyException, CertificateException, NoSuchAlgorithmException,
                KeyStoreException, KeyManagementException {

    final String allPassword = "123456";
    TrustStrategy acceptingTrustStrategy = (X509Certificate[] chain, String authType) -> true;
    SSLContext sslContext = SSLContextBuilder
                    .create()
                    .loadKeyMaterial(ResourceUtils.getFile("classpath:keystore.jks"),
                                        allPassword.toCharArray(), allPassword.toCharArray())
//.loadTrustMaterial(ResourceUtils.getFile("classpath:truststore.jks"), allPassword.toCharArray())
                    .loadTrustMaterial(null, acceptingTrustStrategy)
                    .build();

    HttpClient client = HttpClients.custom()
                                    .setSSLContext(sslContext)
                                    .build();

    HttpComponentsClientHttpRequestFactory requestFactory =
                    new HttpComponentsClientHttpRequestFactory();

    requestFactory.setHttpClient(client);

    RestTemplate restTemplate = new RestTemplate(requestFactory);

    return restTemplate;
}

Hope this is handy for someone :) Also this should be extremely handy if you integrate BNP Paribas Leasing : ) 
I recently had to use a PFX certificate for client authentication (maybe another post will be coming) and for that reason I had to convert it to a Java keystore (JKS). 

We will create BOTH a truststore and a keystore, because based on your needs you might need one or the other. 
The difference between truststore and keystore if you are not aware is(quote from the JSSE ref guide:

TrustManager: Determines whether the remote authentication credentials (and thus the connection) should be trusted.
KeyManager: Determines which authentication credentials to send to the remote host.

Ok that's enough what you will need is openssl and Java 7+ ;) !

First let's generate a key from the pfx file, this key is later used for p12 keystore.

openssl pkcs12 -in example.pfx -nocerts -out example.key  
Enter Import Password:
MAC verified OK
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:

As shown here you will be asked for the password of the pfx file, later you will be asked to enter a PEM passphase lets for example use 123456 for everything here.
The second commands is almost the same but it is about nokey and a crt this time

openssl pkcs12 -in example.pfx -clcerts -nokeys -out example.crt
Enter Import Password:
MAC verified OK

Now we have a key and and a crt file
Next step is to create a truststore.

keytool -import -file example.crt -alias exampleCA -keystore truststore.jks
Enter keystore password:
Re-enter new password:
Owner: CN=.....
.......
Trust this certificate? [no]:  yes
Certificate was added to keystore

As you can see here you just import this crt file into a jks truststore and set some password. For the question do you trust this certificate you say yes, so it is added in the truststore.

We are done if you only need a truststore. 
The last step(s) is to create a keystore

openssl pkcs12 -export -in example.crt -inkey example.key -certfile example.crt -name "examplecert" -out keystore.p12
Enter pass phrase for example.key:
Enter Export Password:
Verifying - Enter Export Password:

This p12 keystore is enough in many cases, still if you need a JKS keystore you need one additional command

keytool -importkeystore -srckeystore keystore.p12 -srcstoretype pkcs12 -destkeystore keystore.jks -deststoretype JKS
Importing keystore keystore.p12 to keystore.jks...
Enter destination keystore password:
Re-enter new password:
Enter source keystore password:
Entry for alias examplecert successfully imported.
Import command completed:  1 entries successfully imported, 0 entries failed or cancelled

Warning:
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore keystore.jks -destkeystore keystore.jks -deststoretype pkcs12".

That is all folks ! I hope this helps someone :) 

ls                                                                        
example.pfx  example.key            keystore.p12
example.crt  keystore.jks           truststore.jks

See you in post 2 how to use this keystore for client side authentication. Also how to use the truststore if you need to use it.

Bad news everyone,
as you already have noticed I do not have time to write blogs :(

However I would recommend you to check and keep an eye on the youtube channel of the Bulgarian Java User Group (http://jug.bg) which is https://www.youtube.com/user/BulgarianJUG/

You can enjoy all the jprime conference video recordings at https://www.youtube.com/user/BulgarianJUG/playlists but also checkout the videos tab since we have a lot of non jprime videos uploaded as well and maybe at some point you can even see me ;)


Subscribe to: Posts ( Atom )

ABOUT AUTHOR

Superhero with Java powers && Gamer && (Sci-Fi & Star Wars geek) && Bulgarian Java User Group Leader && nerds2nerds podcaster && (link: http://java.beer) java.beer guy ? this : null

Social

Twitter
Facebook

LATEST POSTS

  • Use Client Certificate Authentication with Java and RestTemplate
    As a follow up of the  http://gochev.blogspot.com/2019/04/convert-pfx-certificate-to-jks-p12-crt.html  we now have a keystore and a truststo...
  • Use Multiple JVM versions on Mac OS and Linux
    Linux Download multiple Java versions and put them into /opt/ If you already have some JDK from ubuntu repo or etc not a big deal, just f...
  • Convert PFX certificate to JKS, P12, CRT
    I recently had to use a PFX certificate for client authentication (maybe another post will be coming) and for that reason I had to convert i...
  • Becoming a Junior Java Developer 101
    Hello everyone, in order to become a Java developer you don't need much ;), however if you start learning everything you probably will...
  • Hibernate Generic DAO.
    When you use Hibernate and DAO pattern it is a good idea to use a Generic Base Dao. The fallowing code snippet contains GenericDAO that is a...
  • Youtube video channel of the Bulgarian Java User Group
    Bad news everyone, as you already have noticed I do not have time to write blogs :( However I would recommend you to check and keep an ey...
  • RichFaces server-side paging with DataTable.
    Most of the component toolkits have build in support for server-side paging this days but in rest of the cases you need to customize a littl...
  • JSF, RichFaces, Spring, Hibernate – lets make development easy.
    The goal of this article is to show you how you can use Hibernate, Spring and JSF 1.2 in the most easiest way. Used technologies : ma...
  • Patching a Maven library with your custom class.
    Sometimes you use a library that has a bug. Or maybe it doesn’t has a bug but you want to change something. Of course if it is an open sourc...
  • spring-loaded rocks !
    Today I found spring loaded ( https://github.com/spring-projects/spring-loaded ) in short this is a java agent that enables class reloading...

Categories

  • .net
  • AboutMe
  • appengine
  • blogspot
  • conf
  • CV
  • gwt
  • java
  • java.javaee
  • javaee
  • javafx
  • javascript
  • other
  • photoshop
  • ria
  • spring

What I read ?

  • Java Code Geeks
  • Baeldung
  • Pushing Pixels
  • Javarevisited
  • Vlad Mihalcea
  • Vanilla #Java
  • Antonio's Blog
  • Oracle Blogs | Oracle The Aquarium Blog
  • JavaWorld
  • blog@CodeFX
  • Jonathan Giles
  • JavaFX News, Demos and Insight // FX Experience
  • Eclipse Papercuts
  • Codedependent
  • Caffeine Induced Ramblings - Jasper Potts's Blog
  • Joshua Marinacci's Blog

Search This Blog

Blog Archive

  • November 2019 (2)
  • July 2019 (2)
  • April 2019 (2)
  • February 2019 (1)
  • January 2019 (1)
  • May 2016 (1)
  • October 2015 (1)
  • September 2015 (1)
  • June 2015 (2)
  • May 2015 (2)
  • February 2015 (1)
  • October 2014 (1)
  • July 2014 (2)
  • April 2014 (1)
  • June 2013 (1)
  • July 2011 (2)
  • May 2011 (1)
  • March 2011 (1)
  • July 2010 (1)
  • June 2010 (1)
  • October 2009 (3)
  • September 2009 (6)
  • August 2009 (9)
  • June 2009 (1)
Powered by Blogger.

Blog info

My photo
jNayden
View my complete profile

About us

Labels

  • .net
  • AboutMe
  • appengine
  • blogspot
  • conf
  • CV
  • gwt
  • java
  • java.javaee
  • javaee
  • javafx
  • javascript
  • other
  • photoshop
  • ria
  • spring

Advertisement

Popular Posts

    no image Use Client Certificate Authentication with Java and RestTemplate
    no image Use Multiple JVM versions on Mac OS and Linux
    no image Convert PFX certificate to JKS, P12, CRT
    no image Becoming a Junior Java Developer 101
    no image Hibernate Generic DAO.
    no image Youtube video channel of the Bulgarian Java User Group
    RichFaces server-side paging with DataTable. RichFaces server-side paging with DataTable.
    no image JSF, RichFaces, Spring, Hibernate – lets make development easy.
    Patching a Maven library with your custom class. Patching a Maven library with your custom class.
    no image spring-loaded rocks !

FOLLOW US @ INSTAGRAM

About Me

Copyright 2014 JOKe's Blog.
Blogger Templates Designed by OddThemes