|
The day to day life of a small company CTO using Microsoft's technology
-
The last post was pretty short... So, here are some more details regarding "Azure Tables for LightSwitch", which you may download from Microsoft's Visual Studio Gallery here.
Product Description
We have developped this “Azure Tables for LightSwitch” as part as our interest in both Visual studio LightSwitch, and the Windows azure platform.
“Azure Tables for LightSwitch” enables LightSwitch developers to use azure tales data sources, which does not come as an integrated option in the original LightSwitch suite.
Currently we do not intend to sell this product for profit, but use it as part of a software development projects that enables building applications that use both SQL Azure and Azure tables data sources in order to lower application costs, and are using mainly LightSwitch as the back-office system for these projects.
Here are a few more details regarding this product:
The Product:
ATLS – Azure Table for LightSwitch - Managed Azure Tables using LightSwitch
What is it good for?
Now anyone can easily access Azure tables’ right from within LightSwitch!
Azure Tables storage is meant to store large chunks of data. It is much cheaper than using Azure SQL, especially if you have tons of flat data.
LightSwitch enables development of quick and powerful back office systems
Who is it good for?
Any company who is making use of Azure tables for high traffic or for huge piles of data, who wishes to have easy management access to this data.
Ideal for media and advertisement companies who needs large data storage with very high load of transactions, which needs a quick management application.
Features:
1. Connect to existing entity storage
2. Create new Azure Tables with a simple designer
3. Define a partition strategy
4. Define custom keys
5. Auto-generate WCF RIA service to interact with full CRUD support
6. Support searching within huge data piles
7. Supports paging
8. Define tables’ relationships - coming soon!
9. All is defined right within the familiar environment of Visual Studio 2010 and Visual Studio LightSwitch 2011
|
-
Hi All,
We have just completed an initial alpha release of a small product we've been working on. What it does is enabling LightSwitch users to make use of the cheaper storage of Azure - tables.
This is a VS2010 add in, which lets you connect to an Azure storage, define tables or use your existing, auto-generate RIA services code in order to be able to easily expose the requested tables.
How to start?
-
Create a LightSwitch project
-
Under "Tools" menu choose "Azure Tables for LightSwitch"
-
Follow the wizard...
Please give it a try and let me know your further requsts/wishes.
Because Azure Tables for LightSwitch.zip
Amit
|
-
Of course it happens at the worst timing. I have installed LightSwitch RTM last week, preparing for an event at Microsoft. Today, finalizing my preperations, my machine crashed, fixed it self by setting me back a few days.
When I tried to fire up a LightSwitch project - I couldn't. So I tried to re-install LightSwitch RTM - which I couldn't, getting a message that I need to remove LightSwitch Beta 2 (which I already removed about a week ago). I opened up the control panel and I could see that LightSwitch Beta 2 lives on my machine. I was trying to remove it and got an alarming message: "A problem has been encountered while loading the setup components. Canceling setup".
Fortunately for me, I still had the Beta 2 installation. So - I have reinstalled Beta 2, Uninstalled it and reinstalled RTM. It now works!
|
-
After installing Visual Studio LightSwitch Beta 2 I got the following error for every project I started:
Error 67 An error occurred while establishing a connection to SQL Server instance '.\SQLEXPRESS'. Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\LightSwitch\v1.0\Microsoft.LightSwitch.targets
The way I have solved it (after a lot of hassle) was to:
1. Uninstall Visual Studio LightSwitch Beta 2
2. Uninstall SQL Express
3. Re-install Visual Studio LightSwitch Beta 2
Let me know if it worked for you as well.
|
-
While trying to set up our continuous-integration environment - CruiseControl.net (ccnet) with our new Silverlight 4 project, I have encountered some difficulties. Since it did take me some hours to solve, I thought it might be helpful posting the solution I have found appropriate for my needs.
The errors I got from the ccnet report were:
…C:\Program Files (x86)\MSBuild\Microsoft\Silverlight\v4.0\Microsoft.Silverlight.Common.targets" …The Silverlight 4 SDK is not installed
and
…The imported project "C:\Program Files (x86)\MSBuild\Microsoft\Silverlight\v4.0\Microsoft.Silverlight.CSharp.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
The solution for me was very straight forward after I found out that Silverlight does not (yet?) support x64 platform. I have changed the build to occur with MSBuild x32 rather than the x64 version I would normally use. That had solved all my problems. Well, to be honest, only the ones had to do with this specific issue…
|
-
We have just recently asked by a customer to come up with a simple method of quickly update more than 500 machines with multiple ODBC connections. That might be a hell-of-a headache for the IT guys…
The way we have decided to achieve that, was by running a vbscript (I admit that I forgot it even still exists). So I have found the basic idea in the Hey, Scripting Guy! Blog (thank you!) and have made some changes and additions.
So here it is – in full (can be downloaded from here):
sub UpdateOdbc(Name, Server, Database, User, Password, Trusted)
'Updates an existing System ODBC SQL connection. 'Please note that this script must run with administrative privileges. 'Parameters: 'Name (string) - The ODBC DSN Name 'Server (string) - The full database server name. Might be in Server\Instance format 'Database (string) - The database name 'User (string) - the user name used to login 'Password (string) - the password used to login 'Trusted (boolean) - states that the connection is to be trusted connection. When set to True, both username and password are disregarded. ' 'Usage: 'UpdateOdbc "Because Connection", "Because\sql2008", "BecauseDB", "sa", "jku!oi", False 'or - trusted: 'UpdateOdbc "Because Connection", "Because\sql2008", "BecauseDB ", "", "", True if OdbcNameExists(Name) = true then DeleteOdbc Name CreateOdbc Name, Server, Database, User, Password, Trusted end if end sub
sub CreateOdbc(Name, Server, Database, User, Password, Trusted) 'Creates a System ODBC SQL connection. 'Please note that this script must run with administrative privileges. 'Parameters: 'Name (string) - The ODBC DSN Name 'Server (string) - The full database server name. Might be in Server\Instance format 'Database (string) - The database name 'User (string) - the user name used to login 'Password (string) - the password used to login 'Trusted (boolean) - states that the connection is to be trusted connection. When set to True, both username and password are disregarded. '
'Usage: 'CreateOdbc "Because Connection", "Because\sql2008", "BecauseDB", "sa", "jku!oi", False 'or - trusted: 'CreateOdbc "Because Connection", "Because\sql2008", "BecauseDB", "", "", True Const HKEY_LOCAL_MACHINE = &H80000002
computer = "." Set registryObject=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _ computer & "\root\default:StdRegProv")
keyPath = "SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources" valueName = Name
'You may want to replace "SQL Server" with '"SQL Server Native Client 10.0" for SQL native client 10 '"SQL Native Client" for SQL Native client value = "SQL Server" registryObject.SetStringValue HKEY_LOCAL_MACHINE,keyPath,valueName,value
keyPath = "SOFTWARE\ODBC\ODBC.INI\" & Name registryObject.CreateKey HKEY_LOCAL_MACHINE,keyPath keyPath = "SOFTWARE\ODBC\ODBC.INI\" & Name valueName = "Database" value = Database registryObject.SetStringValue HKEY_LOCAL_MACHINE,keyPath,valueName,value
'Driver - Defaults to SQL Driver (SQLSRV32.dll) 'Instead of SQLSRV32.dll you may use: 'SQL Native Client - SQLNCLI.dll 'SQL Server Native Client 10 - SQLNCLI10.dll valueName = "Driver" value = "C:\WINDOWS\System32\SQLSRV32.dll" registryObject.SetStringValue HKEY_LOCAL_MACHINE,keyPath,valueName,value valueName = "Server" value = Server registryObject.SetStringValue HKEY_LOCAL_MACHINE,keyPath,valueName,value if Trusted = True then valueName = "Trusted_Connection" value = "Yes" registryObject.SetStringValue HKEY_LOCAL_MACHINE,keyPath,valueName,value else valueName = "Password" value = Password registryObject.SetStringValue HKEY_LOCAL_MACHINE,keyPath,valueName,value
valueName = "PWD" value = Password registryObject.SetStringValue HKEY_LOCAL_MACHINE,keyPath,valueName,value
valueName = "username" value = User registryObject.SetStringValue HKEY_LOCAL_MACHINE,keyPath,valueName,value
valueName = "LastUser" value = User registryObject.SetStringValue HKEY_LOCAL_MACHINE,keyPath,valueName,value end if end sub
sub DeleteOdbc(Name) 'Use to delete an ODBC Connection 'Please note that this script must run with administrative privileges. ' 'Parameters: 'Name (string) - The ODBC DSN Name ' 'Usage: 'DeleteOdbc "Because Connection" Const HKEY_LOCAL_MACHINE = &H80000002 computer = "." Set registryObject=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _ computer & "\root\default:StdRegProv") keyPath = "SOFTWARE\ODBC\ODBC.INI\" & Name registryObject.DeleteKey HKEY_LOCAL_MACHINE, keyPath
keyPath = "SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources" valueName = Name registryObject.DeleteValue HKEY_LOCAL_MACHINE,keyPath,valueName end sub
function OdbcNameExists(Name) Const HKEY_LOCAL_MACHINE = &H80000002 computer = "." Set registryObject=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _ computer & "\root\default:StdRegProv") keyPath = "SOFTWARE\ODBC\ODBC.INI\" & Name registryObject.GetStringValue HKEY_LOCAL_MACHINE, keyPath, "Server", key
if IsNull(key) then OdbcNameExists = false else OdbcNameExists = true end if end function
|
-
This is really off topic.
I'm having an issue opening XAML files in Visual Studio 2010. The IDE simply crashes. I have opened a bug with Microsoft regarding that matter and will update once I have some sort of a result.
Anyway, I thought it might be something I've installed in the past few days, so I went to System Restore – which of course, happened to be disabled… So, I thought to myself, I'll simply enable it, so that it won't happen again. That wasn't simple as I thought though. When trying to enable system restore on drive C it gave me an error "There was an unexpected error: The filename, directory name or volume label syntax is incorrect. (0x8007007B). System Restore will now close." After some investigations, I have discovered that I happen to have two instances of C drive on the System Restore Properties form. One appeared in the beginning and the other at the end and was called "C (missing)" – which, by the way, is not a good sign. All I had to do is to turn off system restore for that "missing" hard drive – which made it disappear, and enable system restore on the correct C drive.
|
-
(I'm writing this post in English, as I assume it would be easier for me to express my thoughts regarding this subject in a more technical manner. Please try to excuse me for abusing the language…)
When dealing with cross domain transactions, with processes that may take more than split seconds, we may have a "too long transaction" that will hang one or more tables in the database. Let me start with an example. Assume you have an n-tier application with a business tier. Each domain has its own business process, and the tiers, by any mean, interact one with the other.
Figure 1 - Add Customer - Simple
In Figure 1, a system dealing with customers, companies, etc. (possibly some kind of a CRM solution), when adding a customer will also add a company, and to that company – a default warehouse. While relatively a simple process, considering the amount of necessary validation etc. that might be a lengthy operation. Of course, it should be an atomic operation, wrapped in a transaction (see Figure 2).
Figure 2 - Add Customer - Elaborative
A way to solve the lengthy transactions problem is to accumulate the proposed database interactions within a separate component, and when the time to "commit" arrives, and only then, to actually begin the transaction, execute the SQL statements and commit the transaction. In order to achieve that goal, we have changed the way our data access layer interacts with our Transaction Manager. The transaction manager is no longer just handling transaction, but has become an actual statements aggregator. It has two modes of operations: the common way – which is still needed in some cases, and the aggregator way – which solves the above problem.
The Transaction Manager
Generally, as mentioned there should be two methods – the "regular" one (use TransactionScope against the connection) and the "aggregator" one – which should solve the discussed problem. The way to solve that, is instead of opening a transaction against a database connection and directly call the execute methods on that connection, is to collect the statements and upon commit, and only then, begin the actual database connection and execute the collected statements. So the time the actual transaction locks the relevant table shrinks to the amount of time it takes to actual run the statements rather than the time it takes to run the whole business process.
Another benefit from this solution is that in some cases one can delay the whole process to a later time, and even stop it in the middle – pretty easily and without a compensation mechanism.
If you have any questions, drawbacks and/or comments – please write them down here or send me an email to amit@because.co.il
|
-
רק ב-10 בלילה יצאתי לדרכי הביתה מ- Think Next, כנס החדשנות של מיקרוסופט שהתקיים הערב בהאנגר 11 בתל אביב אני לא יודע איך זה אצלכם אבל אצלנו בצפון זה נחשב ממש מאוחר...!
אז מה היה לנו, תערוכה מפוארת עם עוד ועוד ביתנים שהציגו פתרונות חדשניים ואפליקציות מורכבות על פלטפורמת .net ואפילו ביתן של אנשי מיקרוסופט שעסק דווקא בגאג'טים, שצוות החדשנות מבית מיקרוסופט עומל עליו.
באופן אישי הייתי רוצה להזמין את האפליקציה הזאת שמאפשרת להקרין סרט אחד על 9 סלולרים במקביל וגם אפליקציות זיהוי תמונה מדליקות - מישהו יודע איפה קונים?
כמובן, סדרת הרצאות חדשנות כשמבחינתי ההרצאה הכי מעניינת היתה של סגן נשיא ממיקרוספט קרייג מנדי, שדיבר על פני המחשוב בשנים הקרובות ממחשוב ענן ולאן הוא יגיע בשנים הקרובות ועד לטכנולוגיות NUI מתקדמות שמאפשרות ניהול ממשק משתמש בדרכים מאד לא מסורתיות ובלי קשר לעכבר למשל...מכיוון שמדובר בבחור שבין היתר משמש כיועץ למחשוב של אובמה - לא פחות - הקשבתי לו בקשב רב ונהנתי מאד אבל כמו תמיד, הדבר הכי מעניין בכנס היה המפגש עצמו - מינגלינג עצבני עם כל מי שהוא מישהו בתעשייה שלנו, חיית מסיבות אני לא, ובכל זאת מצאתי את עצמי פוגש שם עוד ועוד אנשים – החל ממנהלי פיתוח אצל לקוחות בולטים שלנו ועד כמובן הצוות המקצועי במיקרוסופט עצמה בקיצור. שווה לגמרי- תרשמו ביומנים כבר את מפגש החדשנות של שנה הבאה!
|
-
...ועכשיו יש לי גם חשבון ב-Twitter.
שם המשתמש הוא peeramit ואני אפילו מתכוון להשתמש בחשבון הזה להודעות מקצועיות...
|
-
ערב חג, ושנייה לפני שיוצאים לחופש ארוך במיוחד, רציתי לשתף אותכם בכמה נושאים חשובים שעלו בבמה המרכזית של כנס developers Academy השנתי שהתקיים השבוע באווניו. האמת, היה מרגש להרצות מול קהל של מאות אנשים שבאו לשמוע על סוגיות מרכזיות בעולם ה- debugging של .net 4 לקח חשוב לפעם הבאה, להקליט בוידיאו ולעלות ON LINE לפורטל המפתחים ולבלוג כמו שעשה למשל מאיר דודאי בהרצאה שלו. אין ספק שהנושא המעניין ביותר בעיני היה ה-IntelliTace- הכלי המרכזי ביותר ב- debugger של 2010 ולמעשה אחד הכלים החשובים ביותר ב-2010 בכלל, אם שואלים את דעתי. זאת כי הוא מאפשר גם בדיקת debug של קוד בדיעבד, כדי לנתח בעיות שקרו ועד היום לא היתה שום דרך לדעת איך, למה ובעיקר את מי להאשים? (כמובן שהכי נוח זה להאשים את אנשי ה-QA...)
בשבוע הבא ואחרי שנרגע ממפלס המצות, אני מבטיח להתייחס בהרחבה לנושא הזה. אם יש משהו שמעניין אתכם - אוסיף את זה לרשימה...
חג אביב שמח ופורח לכולכם.
|
-
הכנס הסתיים ונשאר רק להעלות את החומרים בהם השתמשתי בכדי להציג. תודה לכל מי שהגיע. אני מקווה שיצאתם עם הרגשה שלמדתם משהו ושהיה שווה לבוא.
|
-
|
אני, עבדכם הנאמן, מתכוון להעביר מחר - בית פתוח בנושא תאימות אפליקציות ל- WIN 7 – במיקרוסופט - חיפה ( http://www.mediatech.co.il/contact/applications7_od.htm)
הסמינר יכלול - מבוא ל- Windows 7 שזה בעצם - סקירה מהירה של המערכת, החל משינויים בליבת המערכת דרך מנגנונים חדשים המשפרים את חווית המשתמש וכלה באוסף תכונות חדשות המוסיפות כלים לפיתוח אפליקציות מודרניות.
לאחר מכאן, אדבר על - מבוא לתאימות אפליקציות ב - Windows 7 כלומר - סקירה של השינויים העיקריים בפיתוח אפליקציות בין גרסאות מערכות ההפעלה .
ולבסוף , והכי חשוב - בעיות תאימות נפוצות ופתרונן – סקירה של אוסף בעיות התאימות שרוב האפליקציות "סובלות" מהן ונראה כיצד ניתן לתקן אותן.
|
-
ברור שיש כמה דרכים לשלוח הודעות בין אפליקציות שונות... לטובת הדגמה של נושא ה-UAC בכנס הקרוב של "תאימות אפליקציות ל-Windows 7", הייתי צריך ליצור תקשורת של Windows Messaging, בדומה ל-WM_MOUSEMOVE, בין שתי אפליקציות שונות ב-#C. המטרה היתה שאפליקציה אחת תשלח הודעות והאחרת תאזין להן ותרשום כל הודעה שהגיעה. החלטתי להשתמש ב-win32 API של PostMessage, בדוגמא שמצאתי כאן והתאמתי לצרכי ההדגמה. אני עושה שימוש בפונקציה RegisterWindowMessage בשתי האפליקציות בכדי ששתיהן יכירו את האירוע (ניתן היה גם בלי, לו הייתי רוצה להעביר אירוע בתוך האפליקציה, אבל כשמדובר בהעברת אירועים בין אפליקציות - רצוי להשתמש ב-RegisterWindowMessage). לאחר מכן, האירוע נשלח ע"י שימוש ב-PostMessage.
מצורף הקוד.
|
-
בתור מנהל פיתוח בחברת BECAUSE, אני נתקל בעשרות מקרים של "תאונות" פיתוח ביום. כמו שסבתא שלי היתה אומרת "אם זה לא היה הילד שלי – גם אני הייתי צוחקת". חלק מהדברים שאני נתקל בהם בשיגרת היום הינם מצחיקים, חלקם מאוד מורכבים ובחלק נדרשת חשיבה ואותה אני רוצה לחלוק פה, בבלוג הזה איתכם.
אני מקווה שהפוסטים שלי יעזרו לכם בקידום העבודה המיקצועית שלכם –בכל הקשור לפיתוח בסביבות וטכנולוגיות מיקרוסופט.
|
|
|
|