I just put on wordpress plugin repository a plugin that I create for a hotel.
Allez ! je vous emmène faire un petit tour de Séoul la nuit, lorsque les grands buildings s’illuminent. Une ville qui semble ne jamais s’arrêter, vivante, au rythme du scintillement des échoppes et de la musique, k-pop et autres, qui résonne à chaque coin de rue.
On commence notre ballade du coté du quartier de Hongdae (홍대) « Hongik University ». Cette université est connu pour son département des beaux arts et de design. Le quartier est vivant, beaucoup de jeunes s’y rendent pour commencer a faire la fête ou pour faire du shopping. On peut croiser quelques jeunes artistes aux tenus extravagantes et au look très original.
A 30 minute de bus se tiens une tout autre ambiance, le marché de Kwang jang (광장시장) ou l’on peut manger quelques plats ou bien faire ses courses.
Pour finir nous avons fait un petit tour du coté de Chung gye chun (청계천).
Des petits lampion, les lanternes de lotus, sont accroché le long des avenues un peu partout dans la ville pour célébrer bientôt l’anniversaire de Bouddha : le 5 mai.
Quelques exhibitions lumineuses tout du long de la rivière artificielle sont impressionnantes, l’endroit idéale pour finir cette petite excursion nocturne.
Qu’est ce qu’on mange aujourd’hui à Seoul?
Il y a beaucoup de choix pour manger ici, il y a tout d’abord une quantité incroyables de snacks et de restaurants différents ouvert tous les jours à toutes heures mais le mieux est d’aller dans les « the bop » ou l’on peut manger un peu de chaque petit plat réparti sur la table. Le plus célèbre de ces petits plats est le kimchi (김치) qui est composé de piment et de chou fermenté. Il y a aussi le bu chim gae (부침개) sorte de petites crêpes ou pan cake avec des légume, des fruits de mer…
Ou alors manger des morceau de porc sur un petit grill au milieu d’une table, avec bien sure la boisson traditionnel le Soju (소주) .
On peut aussi boire un peu de Dong Dong Ju (동동주) ou le Makgeolli (막걸리) à toutes heures une sorte de bière laiteuse un peu sucré fait à partir de riz.
Construite sur un mont surplombant la ville (262 m d’altitude) la « N Seoul Tower » mesurant 236,7 m surplombe toute la ville.
Au pied de la tour des emplacements prévus pour les « cadenas d’amour » ont été disposés. Anciennement les gens les accrochait au grille de sécurité (garde-corps) entourant le site.
Avec ses 10.421.000 habitants Seoul est la quatrième ville la plus peuplée du monde et cela peut se comprendre lorsque l’on voit le panorama de la la ville du haut de la tour.
Prés du fleuve Han (한강) à Yeouido se déroule tout les ans le festival du printemps. L’occasion pour les Séoulites et les touristes d’aller admirer les cerisiers en fleurs près des rives et quelques animations aussi.
Malheureusement j’ai raté une partie du spectacle qui se déroule la nuit avec des sons et lumières.
Une petite carte de France, avec jquery pour utiliser sur des sites de petites annonces etc. Les sources contienne l’image en vectoriel vous pouvez la modifier en utilisant Inkscape
Little france map component with jquery to use for a classified ad website. Contain .svg picture editable with vertor graphics editor like Inkscape.
Enjoy
This is a very simple example to introduce how to easily emit msil code on the fly with System.Reflexion.Emit.
using System;
using System.Collections.Generic;
using System.Text;
namespace HelloWorldEmit
{
class Program
{
static void Main(string[] args)
{
SayHello();
}
public static void SayHello()
{
Console.WriteLine("Hello world");
}
}
}
Once compiled, we will use .Net Reflector and see ILCode of SayHello method in the assembly.
.method public hidebysig static void SayHello() cil managed
{
.maxstack 8
L_0000: nop
L_0001: ldstr "Hello world"
L_0006: call void [mscorlib]System.Console::WriteLine(string)
L_000b: nop
L_000c: ret
}
To emit this msil code is not a simple task, you have to translate it in your code with method provided by System.Reflexion.Emit package.
If you like IL and you want to keep it clearly and your code look similar to MSIL you can use EmitHelper (« Emit with a human face ») of BLToolKitFramework.
The example below shows how we can be lazier with tool.
Fortunately ReflectionEmitLanguage pluggin on Reflector generate c# Emit library code ready to use.
That’s a screenshot of what we get when SayHello method is translated to ReflectionEmitLanguage with .net Reflector.
Now we will use this peace of code to add emit code method to our main class and call it. We cannot add directly generated method to an existing type.
So we build an intermediate type to call it.
namespace HelloWorldEmit
{
class Program
{
static void Main(string[] args)
{
Type t = DefineType("HelloWorldEmit", "Program");
MethodInfo method = t.GetMethod("SayHello",System.Reflection.BindingFlags.Static | BindingFlags.Public);
method.Invoke(null, null);
}
/// <summary>
/// Generate intermediate type to call
/// </summary>
/// <param name="assName"></param>
/// <param name="typeName"></param>
/// <returns></returns>
public static Type DefineType(string assName,string typeName)
{
AssemblyName asmName = new AssemblyName(assName);
AppDomain domain = AppDomain.CurrentDomain;
AssemblyBuilder demoAssembly =
domain.DefineDynamicAssembly(asmName,
AssemblyBuilderAccess.Run);
ModuleBuilder demoModule =
demoAssembly.DefineDynamicModule(asmName.Name);
TypeBuilder generatedType = demoModule.DefineType(typeName, TypeAttributes.Public);
MethodBuilder hello = BuildMethodSayHello(generatedType);
return generatedType.CreateType();
}
/// <summary>
/// Method copied pasted from reflector
/// </summary>
/// <param name="type"></param>
/// <returns></returns>
public static MethodBuilder BuildMethodSayHello(TypeBuilder type)
{
// Declaring method builder
// Method attributes
System.Reflection.MethodAttributes methodAttributes =
System.Reflection.MethodAttributes.Public
| System.Reflection.MethodAttributes.HideBySig
| System.Reflection.MethodAttributes.Static;
MethodBuilder method = type.DefineMethod("SayHello", methodAttributes);
// Preparing Reflection instances
MethodInfo method1 = typeof(Console).GetMethod(
"WriteLine",
BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic,
null,
new Type[]{
typeof(String)
},
null
);
// Setting return type
method.SetReturnType(typeof(void));
// Adding parameters
ILGenerator gen = method.GetILGenerator();
// Writing body
gen.Emit(OpCodes.Nop);
gen.Emit(OpCodes.Ldstr, "Hello world");
gen.Emit(OpCodes.Call, method1);
gen.Emit(OpCodes.Nop);
gen.Emit(OpCodes.Ret);
// finished
return method;
}
}
}
This hack provide to enable click on Toolbar or Menu strip without focus on form container when you are not in mdi mode (IsMdiContainer = false on your main form).
This is very useful if you use transparency on multiple forms and you can’t use Multiple Document Interface functionality.
You can found this trick on paint.net class sources (PaintDotNet.SystemLayer.ToolStripEx) and more information on this blog
/// <summary>
/// winform native constants
/// </summary>
public class NativeConstants
{
internal const uint WM_MOUSEACTIVATE = 0x21;
internal const uint MA_ACTIVATE = 1;
internal const uint MA_ACTIVATEANDEAT = 2;
internal const uint MA_NOACTIVATE = 3;
internal const uint MA_NOACTIVATEANDEAT = 4;
}
/// <summary>
/// Click through method implementation
/// </summary>
public class ToolStripCT : ToolStrip //or MenuStrip, BindingNavigator etc...
{
public ToolStripCT(ToolStripItem[] toolStripItems)
: base(toolStripItems)
{
}
/// <summary>
/// Overided for activete direct click on a toolstrip item
/// and not default behavior : set focus to the form container and fire event until you click again
/// </summary>
/// <param name="m"></param>
protected override void WndProc(ref System.Windows.Forms.Message m)
{
base.WndProc(ref m);
if (m.Msg == NativeConstants.WM_MOUSEACTIVATE &&
m.Result == (IntPtr) NativeConstants.MA_ACTIVATEANDEAT)
{
m.Result = (IntPtr) NativeConstants.MA_ACTIVATE;
}
}
}