Skip to content

Instantly share code, notes, and snippets.

@ufuk
ufuk / Sort Map By Collection Value Size (descending).md
Last active August 29, 2015 14:11
Sort Map By Collection Value Size (descending)

Note: Add a new criteria to compare method if sizes are equal.

Map<X, Set<Y>> notSortedMap = ...

Map<X, Set<Y>> sortedMap = new TreeMap<>(new Comparator<X>() {
    @Override
    public int compare(X firstX, X secondX) {
        return Integer.valueOf(notSortedMap.get(secondX).size()).compareTo(Integer.valueOf(notSortedMap.get(firstX).size()));
 }
@ufuk
ufuk / Convert cp1254 encoded file to utf-8
Created December 30, 2014 22:03
Convert cp1254 encoded file to utf-8
iconv -f cp1254 -t utf-8 original_file.srt > new_file.srt
@ufuk
ufuk / Git Branch İsimlerinde Büyük-Küçük Harf Karmaşası.md
Last active August 29, 2015 14:13
"Git Branch İsimlerinde Büyük/Küçük Harf Karmaşası" hakkında blog yazım (n11.com)

Eğer geliştirme takımı kendi içinde takımlara ayrılmışsa Feature Branch'leri takım ismine uygun şekilde klasörler altında oluşturmak Source Tree gibi araçlar kullanırken branchleri görüntülemede kolaylık sağlayacaktır.

Burada bu branchleri oluştururken dikkat edilmesi gereken bir durumdan söz edeceğim.

Mac OS X dosya sistemi büyük/küçük harf duyarlı değildir, yani aynı klasör altında farklı büyük/küçük harf kombinasyonuna sahip olsa bile aynı isimde dosya/klasör oluşturulamaz. Bu nedenle Git'te branchlerimizi grup adlarına göre klasörlerken grup adı için standart bir biçim kullanmamız en iyisi olacaktır.

Örneğin "Grup1" ve "GRUP1" OS X için aynı anlamdadır ve ikisinin aynı anda varolduğu bir T anında Source Tree'nin ve Git'in kafası yanmak üzere demektir. Local repomuzda "Grup1/Issue-1071" adlı bir branch olduğunu düşünelim. Remotetaki "GRUP1/Issue-1453" adlı bir branche geçmek istediğimizde localimizde "Grup1" adlı bir klasör varolduğu için (".git/refs/heads/" altında) "GRUP1/Issue-1453" branchi remotetak

@ufuk
ufuk / download-youtube-mp3.sh
Created August 13, 2016 11:07
Download YouTube video as MP3
youtube-dl --extract-audio --audio-format mp3 <video URL>
@ufuk
ufuk / Child.java
Last active October 5, 2016 21:14
Workaround for Project Lombok's builders with inheritance issue.
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class Child extends Parent {
private String childField_1;
@ufuk
ufuk / HowToGetHttpServletRequestAndResponseProgrammatically.java
Created October 6, 2016 11:31
To get the request and response objects in Spring MVC projects you can use this code
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
HttpServletRequest httpServletRequest = servletRequestAttributes.getRequest();
HttpServletResponse httpServletResponse = servletRequestAttributes.getResponse();
@ufuk
ufuk / EntityBuilder.java
Created August 16, 2016 07:04
ObjectBuilder & EntityBuilder
import ...BaseEntity;
import org.apache.commons.lang.math.RandomUtils;
import org.hibernate.Session;
public class EntityBuilder<T extends BaseEntity> extends ObjectBuilder<T> {
@Override
public EntityBuilder<T> set(String fieldName, Object value) {
return (EntityBuilder<T>) super.set(fieldName, value);
}
@ufuk
ufuk / RestTemplateCanNotReadResponseBodyWhenHTTPStatus401.java
Last active November 30, 2016 19:00
Spring RestTemplate Issue - Can't read response body when the HTTP request has return status 401
// Use HttpComponentsClientHttpRequestFactory to fix the issue
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
...
RestTemplate restTemplate = new RestTemplate(new HttpComponentsClientHttpRequestFactory());
@ufuk
ufuk / StartEndTimeWithJodaTime.java
Created October 24, 2016 09:09
Joda-Time library provides us a Virtual Clock utility named "DateTimeUtils". This is a demonstration for mocking start-end times.
import org.joda.time.DateTime;
public class StartEndTimeWithJodaTime {
private DateTime startTime;
private DateTime endTime;
public void process() {
startTime = DateTime.now();
@ufuk
ufuk / run-simple-http-server.sh
Last active January 21, 2017 14:40
SimpleHTTPServer is a simple HTTP server that provides standard GET and HEAD request handlers. Default port is 8000.
#!/bin/bash
python -m SimpleHTTPServer