2 Mart 2014 Pazar

And The Oscar Goes To...


Eveeet, uzun bir süre sonra Oscar adayı oldukça film izlemiş olarak, ödül törenine saatler kala biraz yorum ve tahmin yapmak istedim. Yine de izlemediğim baya film olmasından ötürü her kategori hakkında bir şey diyemeyeceğim. Bakalım neler olacak.

Best Picture
Açıkçası en iyi film kategorisinde son yıllardaki en keyifli filmler seçilmiş diyebilirim. Hangi filmin alacağı oldukça belli fakat diğer filmler de oldukça etkileyiciydi. Gravity, özellikle IMAX'de izlendiğinde efsane bir filmdi benim için. Tom Hanks'in Cast Away'inden bu yana hemen hemen tek kişinin oynadığı en sürükleyici filmdi diyebilirim. The Wolf of Wall Street, pornografik görüntüler had safhada olsa da yine yılın iyi filmlerindendi. Di Caprio ve Scorsese ikilisi yine harika bir iş çıkarmış. American Hustle ise Christian Bale'in oyunculuğu, mekan ve kostümler dışında bence yılın en balon filmlerinden di. Bana biraz geçen seneki Silverlining's Playbook'un meyvelerini yemek istemişler gibi geldi. İlk yarısı sürükleyici denilebilirdi fakat film gereksiz uzundu. Benim bu yılki şahsi favorim ise Dallas Buyers Club. Konu gerçekten hiç beklenmedik bir yere gidiyor filmde. Oyunculuklar inanılmaz. Christian Bale'den sonra McConaughey'in de kilo verme başarısı muazzam. Filmin büyük kısmı ufak bir kasaba içerisinde geçiyor. Oldukça yavaş ilerlemesine rağmen insanı sıkmıyor. Fakat bu yılki en iyi film, biraz filmin iyi olmasından, biraz filmin içeriği itibariyle Academy tarafından pohpohlanacağından ötürü 12 Years a Slave olacak. Film özellikle ırçılık konusunda ekstra bir duyalılığa sahipseniz insanı acayip sinir ediyor. Bu duyguyu yaşatabilmek bile başlı başına bir meziyet. Chiwetel Ejiofor'un performansını, filmin son sahnesi dışında pek beğenemedim açıkçası. Tüm film boyunca yüzünde aynı ifadeyle oynadı. Filmin ilk yarısı soluksuz izlendi fakat ikinci yarısında bir dolu konu iç içe geçti. Bir yerlerden Brad Pitt fırladı falan :) Sonuç olarak bence The Wolf of Wall Street ile yarışacak fakat en iyi film ödülünü alacaktır.

Actor
Christian Bale yine muazzam bir kilo değişikliği ile karşımızda. Internette arattığınızda karşınıza çıkan kilo değişimi resmine bu filmi de eklemek gerekiyor sanırım. Filmdeki pislik karakteri, tipiyle birlikte direkt yansıtmış ve oldukça başarılı gözüküyor. Bu kategorideki en zayıf halka, filmdeki oyunculuğu kötü olmamasına karşın Bruce Dern gibi gözüküyor. Huysuz, yaşlı baba rolünü süper oynamış fakat bence onun yerine buraya bir Tom Hanks de konulabilirmiş. Chiwetel Ejiofor ise Bafta'yı alarak favoriler arasında gözüküyor. Çok alacağını düşünmüyorum fakat en iyi filmdeki ırkçılık muhabbeti burada da geçerli olup bir sürpriz gelebilir. Gelelim Di Caprio'ya. Bu adaylığı, daha önceki filmlerindeki oyunculuğunun yanında biraz daha sönük kalıyor gibi. Filmdeki oyunculuğu yine muazzam. Özellikle overdose yaptıktan sonraki saçmalama sahneleri inanılmaz eğlendirici olmuş. Adamın üzerinde zaten yakışan bir beyefendi, zengin adam rolü var ki yine on numara gitmiş. Üstelik bence bu sene, yıllardır alamadığı ödülden dolayı Academy üzerinde bir baskı da oluşabilir. Son röportajında Oscar için değil iyi iş çıkarmak için oynadığını söylese de içten içe bu sene de alamazsa birilerine söveceği aşikar. Bence favori iki adaydan bir tanesi. Diğer ise kesinlikle Matthew McConaughey. İnanılmaz bir kilo vermiş, süper bir oyunculuk göstermiş, Golden Globe almış, en büyük favorilerden birisi. Di Caprio ile kapışacaklar fakat bence ödülü alacak.

Actress
Bu yılki en zor kategorilerden birisi. Herkes favori ama adaylar genel olarak çok sağlam. Sandra Bullock, şahane ötesi bir oyunculuk sergilemiş. Hemen hemen tek başına oynadığı filmin çoook büyük bir kısmını muhtemelen yeşil perde önünde oynadı. Aktif bir diyaloğun çok olmadığı bu tarz oyunculuklar her zaman zordur fakat 2 saat boyunca uzayda tek başına bir oraya bir buraya giden bir kadını bize soluksuz izletti. Kendisi 2. favorim. Amy Adams'ın ise bence bu sene oyunculuğundan çok göğüsleri ön plana çıktı gibi :) Aşk, nefret gibi duyguların yanında bir düzenbazın sevgilisi rolünün hakkını verdi. Filmin ikinci yarısında çok ortalarda yoktu. Bunlar neyse de... Fakat Cate Blanchett... Blue Jasmine tarz olarak beni pek açmadı fakat Allah'ım bu kadının nasıl bir rol yeteneği var böyle. Gerçek hayatta böyle bir senaryonun içinde olunsa yaşayan kişi bu kadının oyunculuğu yanında rol yapıyor gibi gözükür. Zengin kadın karakteri de rolüne inanılmaz gitmiş, muazzam gözüküyordu. Bence bu yılki kategorilerde kazananın en açık olduğu kategori bu olacak. Judi Dench diğerlerine göre biraz zayıf kalmış ve ne yazık ki filmi izleyemediğim için Meryl Streep hakkında yorum yapamıyorum. Eminim orada da müthiş bir oyunculuk vardır ama o filmi izlemeden oyunu Cate'e verdim bile.

Supporting Actor
Bu kategorideki favorim ise Barkhad Abdi. Adam IMDB'de 2013 yılında doğmuş. Çok enteresan bir hayet hikayesi var. İlk filminde Oscar'a aday ve bence sonuna kadar hak ediyor. Tamam özellikle filmin sonlarına doğru filika içerisindeki sahnelerde "American, American" lafında bıktırdı ve o bölümdeki bazı sahnelerde ne yapacağını bilemez bir kaç görüntüsü var fakat rolüne cuk oturmuş. Genel olarak oyunculuğu çok başarılı ve ufak tefek hatalarının es geçilip ödülün kendisine verileceğini düşünüyorum. Bafta'yı da aldı, bu da adaylığının ciddiyetini gösteriyor zaten. Barkhad ile kafa kafaya kapışacak kişi ise tabi ki Jared Leno. Gerçi actor mü actress mi hangi kategoriden girmesi gerektiğine emin olamadım ama Dallas Buyers Club filmini bu kadar izlenebilir ve kaliteli yapan faktörlerden birisi kendisi. Standart bir insanı oynarken bir duygu aktarımı yapmak çok zor olabiliyorken bu adam rolünün hakkını bir travesti olarak veriyor. Adam filmde kendini homofobik bir adama sevdiriyor daha ne olsun:) Jonah Hill'in oyunculuğunu abartı buldum ve açıkçası Di Caprio'nun gölgesinde kaldı zaten. Bradley Cooper ve Michael Fassbender ise, başka bir yıl olsa bu ödülün favorileri olabilirlerdi fakat biraz şansızlıklarına kurban gittiler diyelim.

Supporting Actress
Hemen söyleyeyim, filmi izlemediğim için Julia Roberts ile ilgili yorum yapamıyorum :( Sally Hawkins, aslında oldukça fazla ruh halini yansıtabilecek bir rolde iken beni çok etkilemedi. Şansının olmadığını düşünüyorum. Jennifer Lawrence, geçen seneki en iyi kadın oyuncu Oscar'ından sonra inanılmaz bir çıkışta. Overrated bir oyuncu mu henüz karar veremedim. American Hustle'da fena değildi aslında. Bir filmdeki iyi oyuncu sayısı arttığı zaman bir ya da bir kaçı biraz silik kalıyor. Jennifer için de aynısı geçerli sanırım. Filmin ilk yarısında zaten çok ortada yoktu. İkinci yarıda ise sırf ortaya biraz Jennifer koyalım diye yapılmış sahneler var sanki (Evdeki çıldırma sahnesi falan). Ama her şeye rağmen başarılı bir oyunculuk sergiledi bence ve yine bu yılki favorilerden. June Squibb keşke ödülü alsa. Bu kadar tonton ve huysuz bir kadın olamaz :) Filmin kendisini bu kadar çekici yapan kişilerin başında geliyor aslında. Rolü çok çok fazla değil ama oynadığı az zamanda bile bana gerçek hayatta tanıdığım bir çok babanneyi aynen yansıttı. Bu kategorideki favorim ise Lupita Nyong'o olacak. O kırbaçlanma sahneleri, ağlamaları, insanın yüreğini sızlatıyor. Kendisi de film geçmişi olmayanlardan. Bu sene Hollywood'a özellikle Afrika'dan yeni oyuncular katılacak gibi. Zaten bu seneki ödül törenleri, Ellen'ın sunumu, 12 Years a Slave ve benzeri faktörlerden ötürü tam bir küresel mesaj verme töreni olacak gibi :D

Diğer kategorilerde fazla yorumda bulunmayacağım fakat fikrim olup aday filmleri izlediğim kategorilerdeki favorilerim de aşağıdaki gibi olacak. İşe uyumadan gidecek gibiyiz ama neyse senede bir gece sonuçta. Herkese iyi seyirler diyeyim şimdiden.

Best Picture - 12 Years a Slave
Actor - Matthew McConaughey
Actress - Cate Blanchett
Supporting Actor - Barkhad Abdi
Supporting Actress - Lupita Nyong'o
Directing - Alfonso Cuaron
Costume Design - American Hustle
Film Editing - Gravity
Animated Feature Film - Despicable Me 2
Music (Original Song) - Happy (Despicable Me 2)
Production Design - The Great Gatsby
Visual Effects - Gravity
Writing Adopted Screenplay - The Wolf of Wall Street
Writing Original Screenplay - American Hustle

( Academy Awards 2014, Oscars, Ödül Töreni, 12 Years a Slave, The Wolf of Wall Street, Gravity, Dallas Buyers Club, Leonardo Di Caprio, Christian Bale, Barkhad Abdi)

31 Ekim 2013 Perşembe

Primefaces Growl Not Rendered After Update

I continue forwarding my experiences on primefaces. Today I've had another issue and finally got the solution.

If you are using primefaces growl component to show messages after a process, you have to add a FacesMessage to FacesContext and update the component or set globalOnly attribute true. Ordinarily, growl must show up and show your test you put in FacesMessage. In my project, I push a primefaces command button that has an actionListener, I do things in server side, put my FacesMessage to the context and update my components in UI. But the growl does not show up. I've searched for the problem and finally say my mistake got the solution.

Here is my problematic code:
<h:form id="formNewF">

  <p:dialog widgetVar="dlgNewF" dynamic="true">
    <p:ajax event="close" listener="#{myController.closeF()}" update="formNewF"/>
    
    <p:panelGrid columns="3" id="newFPanel">
      <h:outputLabel for="fName" value="FName" /> 
      <p:inputText id="fName" value="#{myController.newF.name}" /> 
      <p:message id="fNameMessage" for="fName" display="text" />  
      <p:column/>
      <p:commandButton value="Save" update="newFPanel, dataTable" action="#{myController.saveF()}" oncomplete="if(!args.validationFailed){dlgNewF.hide();}"/> 
      <p:column/>
    </p:panelGrid>
  </p:dialog>

</h:form>

As you can see, I execute my saveF method. In that method, I put my FacesMessage to context. Here the problem comes. When I return to xhtml the code updates dataTable but the code in my oncomplete event triggers an ajax event which means that we have to go to the server side again. Remember, these are all happening before rendering the xhtml. So my second request to server side overrides the previous context or creates a new one and deletes my FacesMessage. This is the reason why growl does not render.

As a summary, more than one request to server side before rendering the view causes disappearing your FacesMessage and the growl does not render. You can solve this problem by removig the second request or doing the job in one server side request.

( primefaces, jsf, growl, facesmessage, facescontext, rendering, twice, not shown )

28 Ekim 2013 Pazartesi

Cehennem (Inferno) - Dan Brown


Kitabı çıktığı gün almıştım fakat okumak ve inceleme yazmak bu zamana kadar kaldı ne yazık ki. Şimdi düşünüyorum da keşke hemen okusaymışım. Uzun bir kitap okumama döneminden sonra bu kitap ilaç gibi geldi diyebilirim.

Kitap, daha ilk 10 sayfada kendine bağımlı yapmaya başlıyor insanı. Dan Brown'un tarzı, insanı çok fazla boğmayan, kısmen basit olan betimlemeleri ile oldukça kolay anlaşılır oluyor. Beğendiğim bir diğer husus ise roman içerisindeki hikaye sayısını sınırlı tutması. Yani 10 tane ayrı hikaye ile başlayıp kitabın sonunu bağlayamama gibi bir durum olmuyor. Akış ve takip edilebilme durumu, önceki kitaplarındakinde de daha iyi olmuş diyebilirim.

Gelelim konuya. Belki konuların çok ilgimi çekmesinden dolayı, ya da çok tutulan konuları seçmesinden dolayı Dan Brown'un kitaplarını merak içerisinde okuyorsunuz. Bu kitapta, insanı merakta bırakan en önemli unsur kuşkusuz ki Dante olmuş. Dante ile ilgili, fazlaca paralar saçılarak yapılacak bir reklam kampanyası bile bu kadar tutmazdı eminim. Kitabın çeşitli yerlerinde bir çok kez kendisine, yaşamına, siyasi görüşüne, eserlerine değinilmiş ve bir çok detay verilmiş. Bu kitap sonrası, hiç alakası olmayan insanların bile merak edip İlahi Komedya'yı okuyacağından eminim. Kitapta bahsi geçen eserler, belli ki çok büyük bir bilgi birikimi, çalışma ve ekip çalışması ile incelenmiş. Dan Brown'ın ve etrafındaki yardımcı insanların gerçekten de inanılmaz bir bilgi birikimine sahip olduğu söylenebilir. Mekanları ve eserleri öylesine güzel işlemişler ki, kitap okurken bir kaç kez durup Google'a araştırma gereği duydum. Müzelerde gezdiğinizde yanından geçip "güzel çizilmiş" dediğiniz eserlerin altındaki anlam, kimin için, ne amaçla yapıldığı gibi bilgileri öğrendikçe yeniden yeniden incelemek istiyorsunuz eserleri.

Kitabın geçtiği mekanlara bakacak olursak, Dan Brown'ın uzmanlık alanı olan Floransa, Venedik ve az da olsa İstanbul işlenmiş. İtalya'yı ve Floransa'yı daha önce gezmiş bir insan olarak keşke bu kitap bir kaç sene önce çıksaydı da, o eserlere daha fazla bilgi ve merak sahibi olarak baksaydım diyorum. Hikayenin geçtiği mekanlardaki gizli geçitler, çoğu kişinin dikkat etmeyeceği ufak detaylar, bundan sonra özellikle Floransa'yı gezecek insanlar için incelenecek yerler oldu artık. Gelelim İstanbul'a. Diğer şehirlerden biraz daha az değinilmiş olsa da özellikle Tarihi Yarımada ile ilgili güzel tespitler mevcut. Yabancı birileri tarafından her işlendiğindeki o fesli, sarıklı, Arabistan'a benzetilen İstanbul bu sefer daha doğru tespitlerle, ön yargılardan uzak, gerçekten de olduğu gibi işlenmiş. Yalnız bildiğiniz tanıdığınız yerlerin kitapta işlenmesinin şöyle bir dezavantajı var; konudan sapıp mekanların nasıl tanıtılmış onu takip ediyorsunuz bu sefer. Bir de neresi olduğunun merak edildiği yerler var ki biz bildiğimiz için bunları hemen tahmin edebiliyoruz ve heyecanı kalmıyor :) Bir diğer nokta ise, herkesin bir çok gezip gördüğü tarihi eserlerimiz ile ilgili bilmediğimiz detay bilgileri edinebiliyoruz kitaptan.

Senaryoya gelirsek. Akıcı ve insanı sürükleyen bir konu var yine ortada. Önceki kitaplardaki gibi belli bir amaç doğrultusunda tarih içerisinde yolculuk ediyor ve bir takım gizemler çözmeye çalışıyoruz. Hikaye ilerlerken tarihi mekanlar ve detayları ile birlikte, günümüze ait teknolojik gelişmelerden bahsedilmesi, kitapta biraz da bizden birşeyler bulmayı sağlıyor. Özellikte polisiye seven insanlar için kitapta Dan Brown'ın, kim olduğunu merak ettiğimiz karakterler arasında bir ters köşe yapması var ki dillere destan:) Fakat ne yazık ki -spoiler- Robert Langdon'ın hafızasını kaybetmesi sonrası gerçeklerin anlatıldığı esnadaki kurgu çok yavan ve basit kalmış. Truman Show tarzındaki 'Her şey bir senaryoydu' yaklaşımı bende, bir film izleyip sonrasında herşeyin rüya olmasının bıraktığı etkiyi bıraktı. Burası için daha iyi bir kurgu yapılabilirmiş bence -spoiler sonu-

İşten güçten ötürü kitabı tek seferde okuyamadım ne yazık ki fakat bir pazar günü sabahtan başlanıp bir solukta okunacak bir kitap olmuş diyebilirim. Dan Brown'ın yeni kitaplarını dört gözle bekliyor olacağım.

( dan brown, inferno, cehennem, dante, ilahi komedya, cennet, araf, istanbul, venedik, floaransa )

12 Eylül 2013 Perşembe

Primefaces Datatable Contextmenu Disappear Problem Fix

Updatable context menu is a big problem if you are using tree or datatable component of Primefaces. For example in my case, I have a datatable that has row which has different boolean flags. Depending of that flags, I have to change my context menu items. Basically, I have to render different context menus for each row in my datatable. First I tried to update context menu in element but there was a problem which I was finally able to solve...

ContextMenu component has two phases. One is generate or update phase and the other is show phase. If you try to update your context menu on right click, show phase comes first and then it updates itself. After this process, you will see that you context menu appears and disappears. While I was searching for a workaround, I found a post which helped me a lot in Primefaces forum. A guy found a solution which is overriding show function of context menu and then calling this method right after update process is done. This is the best solution I think. That guy applied this workaround for tree component. Below, you can find this approach that is applied to datatable.

<script type="text/javascript">
//patch to fix a problem that the context menu disappears after update
//delay the show to occure after the update 
var siteFunctions = {
    patchContextMenuShow: function() {
        var protShow = PrimeFaces.widget.ContextMenu.prototype.show;
        siteFunctions.patchContextMenuShow.lastEvent = null;
        PrimeFaces.widget.ContextMenu.prototype.show = function(e) {
            var ret;
            if (e) {
//saving last event
                siteFunctions.patchContextMenuShow.lastEvent = e;
                siteFunctions.patchContextMenuShow.lastEventArg = arguments;
                siteFunctions.patchContextMenuShow.lastEventContext = this;
            } else if (siteFunctions.patchContextMenuShow.lastEvent) {
//executing last event
                ret = protShow.apply(siteFunctions.patchContextMenuShow.lastEventContext, siteFunctions.patchContextMenuShow.lastEventArg);
//clearing last event
                siteFunctions.patchContextMenuShow.lastEvent = null;
            }
            return ret;
        };
    }
};

$(document).ready(function() {
    try {
        siteFunctions.patchContextMenuShow();
    } catch (e) {
        console.error(e);
    }
});
</script>

<p:contextmenu beforeshow="return true;" 
               for="dataTable" 
               id="contextMenuID" 
               widgetvar="tableContextMenuWV">
   <p:menuitem value="Menu 1" />
   <p:menuitem value="Menu 2" />
</p:contextmenu>
                
<p:datatable id="dataTable" widgetvar="dataTableW">
   <p:ajax event="contextMenu" 
           oncomplete="tableContextMenuWV.show();" 
           update=":formList:contextMenuID" />
</p:datatable>
( primefaces, jsf, datatable, row, context menu, update, show, disappear )
Kaynak : http://forum.primefaces.org/viewtopic.php?f=3&t=26813

31 Temmuz 2013 Çarşamba

Primefaces Row Toggle on Row Click

Due to the requests of people, I am going to write in English right now (for software topics).

Primefaces, which is a popular tag library for jsf has lots of different components which are pretty useful but these kid of libraries have some problems when you want to do something more detailed. I am going to help these people who are using Primefaces datatable component.

This component has a feature called rowToggler which let us toggle the row by clicking a generated triangle button. But what if you want to toggle the row by clicking anywhere on the row instead of just clicking rowTogglee button? The answer is below. I coded a little javascript stuff to make this feature work.

From one release to another, the css style names and html hierarchy may change in Primefaces. I make this code work in Primefaces v3.5.10. Putting code below to your xhtml page will make datatable rows expandable by clicking on the row:

<script type="text/javascript">
    $(document).on("click", ".ui-datatable-tablewrapper .ui-datatable-data tr.ui-widget-content", function() {
        /*1 - for expanded area*/
        if ($(this).hasClass('ui-expanded-row-content')) {
            return;
        }
        /*2 - to collapse open ones*/
        expandedRow = $('.ui-expanded-row');
        if (expandedRow.length !== 0 && !$(this).hasClass('ui-expanded-row')) {
            $('.ui-expanded-row-content').css('display', 'none');
            var untoggler = expandedRow.find('.ui-row-toggler');
            dataTableWidgetVarName.toggleExpansion(untoggler);
        }
        /*3 - for main expand feature*/
        var toggler = $(this).find('.ui-row-toggler');
        dataTableWidgetVarName.toggleExpansion(toggler);
    });

    $(document).on("click", ".ui-icon-circle-triangle-e", function() {
        if ($(this).hasClass('ui-icon-circle-triangle-s')) {
            return;
        }
        expandedRow = $('.ui-expanded-row');
        if (expandedRow.length !== 0) {
            $('.ui-expanded-row-content').css('display', 'none');
            var untoggler = expandedRow.find('.ui-row-toggler');
            dataTableWidgetVarName.toggleExpansion(untoggler);
        }
    });
</script>

First function is for the row and the second one is for the rowToggler button itself. Because of a bug in Primefaces, you cannot fire click event of the row when you click on images in the row. This is why I had to implement another click function for rowToggler button itself. You can find other descriptions below:

1 - This code block is for expanded area of the row. With this code, onthing happens when user clicks on expanded are of the row.

2 - This code brings a feature to close other expanded rows in datatable when user clicks another row.

3 - This is the main expand feature. When user clicks on the row, I am just calling toggleExpansion() function of datatable element.

Hope this post will help and guide someone who needs similar feature for datatable.

( primefaces, jsf, mojarra, datatable, row, rowToggle, toggleExpansion )