Windows AzureでMySQLに接続できた…けど?

前回、Azure上にVPS2つ設置して、それぞれをhttp、mysqlサーバーとして稼働させた場合、
httpサーバーからmysqlサーバーにつながらないと書きました。

その続きなのですが、一旦httpサーバーにMySQLインストールしてローカルで接続を試みました。
mysqli_connectのHostを100.***.***.***から127.0.0.1に変えました。
…つながりません!

127.0.0.1をlocalhostに変えました。
…つながりました!

…は?

Windows AzureのVPSでMySQLに接続できない

全然解決出来ないので誰かヘルプミー…
VPS-AからVPS-BにPHPでMySQLに接続したいが繋がらない…
状況は以下の通り

・Windows AzureにVPS-A(構成サイズXS)とVPS-B(構成サイズS)を設置
・エンドポイントはVPS-AがHTTP:80と、SSH:22で、VPS-BがSSH:55312
・VPS-AとVPS-Bは同じ可視性
・VPS-AにはWeb環境(Apache2.2、PHP5.3)をインストールして稼働中
・VPS-BにはMySQL5.6をインストールして稼働中
・VPS-AにSSHで接続してVPS-BのMySQLは接続できる
・VPS-AのWebにアクセスするとMessage: mysqli_connect(): (HY000/2003): Can’t connect to MySQL server on ‘100.***.***.***’ (13)のエラーが出る。
・エラー箇所はmysqli_connect(hostname, username, password, database);
・hostname, username, password, databaseはデータが入ってるのを確認済み

Xamarin.iOSでAPNS

APNSはApple Push Notification Serviceの略でiOS用のPUSH通知です。
証明書の作成方法とかApple Developer Centerとかはそこら中にあるので割愛
サーバー側は使うサーバーによって違うので割愛(今回はWindows Azure使いました)

AppDelegate.cs

[Register ("AppDelegate")]
public partial class AppDelegate : UIApplicationDelegate
{
+	public string DeviceToken { get; set; }

	public override bool FinishedLaunching (UIApplication app, NSDictionary options)
	{
+		// APNS サーバにアプリを登録
+		UIRemoteNotificationType notificationTypes = UIRemoteNotificationType.Badge | UIRemoteNotificationType.Sound | UIRemoteNotificationType.Alert;
+		UIApplication.SharedApplication.RegisterForRemoteNotificationTypes (notificationTypes);

		〜中略〜

		return true;
	}

	// DeviceTokenの取得に成功
+	public override async void RegisteredForRemoteNotifications (UIApplication application, NSData deviceToken)
+	{
+		string trimmedDeveceToken = deviceToken.Description;
+		if (!string.IsNullOrWhiteSpace (trimmedDeveceToken)) 
+		{
+			trimmedDeveceToken = trimmedDeveceToken.Trim ('');
+			trimmedDeveceToken = trimmedDeveceToken.Replace (" ", "");
+		}
+		DeviceToken = trimmedDeveceToken;
+
+		(サーバーにDeviceTokenを送信する処理)
+	}
+
+	// DeviceTokenの取得に失敗(ネットつながってないとかシミュレータとか)
+	public override void FailedToRegisterForRemoteNotifications (UIApplication application, NSError error)
+	{
+		base.FailedToRegisterForRemoteNotifications (application, error);
+	}
+
+	// PUSH通知を受け取った
+	public override void ReceivedRemoteNotification (UIApplication application, NSDictionary userInfo)
+	{
+		bool success = userInfo.TryGetValue(new NSString("inAppMessage"), out inAppMessage);
+		if (success)
+		{
+			// 通知センターに登録して各Controllerで受け取れるようにする
+			NSNotificationCenter.DefaultCenter.PostNotificationName ("ReloadChatMessage", null);
+		}
+	}

NotificationViewController.cs

public partial class NotificationViewController : UIViewController
{
+	NSObject notification;

	public override void ViewWillAppear (bool animated)
	{
		base.ViewWillAppear (animated);

+		// PUSH通知受け取り通知
+		notification = NSNotificationCenter.DefaultCenter.AddObserver ("ReloadChatMessage", async delegate(NSNotification obj) {
+			(PUSH通知受け取った時に行いたい処理)
+		});
	}

	public override void ViewDidDisappear (bool animated)
	{
		base.ViewDidDisappear (animated);

+		// PUSH通知受け取り削除
+		NSNotificationCenter.DefaultCenter.RemoveObserver (notification);
	}

VisualStudio + Xamarin.iOSで実機転送出来ない

  • 環境
    Windows 8.1 Pro
    Visual Studio 2013 Ultimate 評価版
    Xamarin.iOS 7.0.5 (Stable)
    iPhone 5c iOS 7.0.4

フォーラムにも既に上がってるっぽいバグ?
http://forums.xamarin.com/discussion/10201/deploy-failed-the-operation-cannot-be-completed-because-a-build-is-already-in-progress

http://forums.xamarin.com/discussion/9826/a-build-is-already-in-progress

読んでみと構成マネージャでDeployのチェック外せばいいみたいなの書いてあるんだけど、
キャプチャ
もう外してありますよ…?
この場合、どうやって実機転送すればよいのじゃ…

Xamarin.iOSでキーボードのサイズなど取得

キーボードの表示・非表示に関する通知設定、削除
[追記]2014年1月23日
もっと簡単に各種データ取得出来たので修正

public override void ViewWillAppear (bool animated)
{
	base.ViewWillAppear (animated);

	// キーボード表示・非表示の通知開始
	NSNotificationCenter.DefaultCenter.AddObserver (UIKeyboard.WillShowNotification, KeyboardWasShown);
	NSNotificationCenter.DefaultCenter.AddObserver (UIKeyboard.WillHideNotification, KeyboardWillBeHidden);
}

public override void ViewDidDisappear (bool animated)
{
	base.ViewDidDisappear (animated);

	// キーボード表示非表示の通知削除
	NSNotificationCenter.DefaultCenter.RemoveObserver (UIKeyboard.WillShowNotification);
	NSNotificationCenter.DefaultCenter.RemoveObserver (UIKeyboard.WillHideNotification);
}

キーボードが表示された時

private void KeyboardWasShown(NSNotification notification)
{
	var keyboardFrame = UIKeyboard.FrameEndFromNotification (notification);

	UIView.BeginAnimations ("AnimateKeyboardShow");
	UIView.SetAnimationDuration (UIKeyboard.AnimationDurationFromNotification (notification));
	UIView.SetAnimationCurve ((UIViewAnimationCurve)UIKeyboard.AnimationCurveFromNotification (notification));
	UIView.SetAnimationRepeatCount (1);
	UIView.SetAnimationRepeatAutoreverses (false);
	〜ここにアニメーションの内容を書く〜
	UIView.CommitAnimations ();
}

Xamarin.iOSでカスタムUITableViewCell

昨日に引き続きな感じで。
午前中必死にxibでセル作ってーとかやったんだけどIntPrt handleが解決できなくなったので結局ゴリゴリ書くことに…

public override UITableViewCell GetCell (UITableView tableView, NSIndexPath indexPath)
{
	var cell = new UITableViewCell ();

	if (indexPath.Row == 0) {
		cell.TextLabel.Text = "Name";
		UITextField textField = new UITextField () {
			BorderStyle = UITextBorderStyle.None,
			Placeholder = "Your name",
			KeyboardType = UIKeyboardType.NamePhonePad,
			ReturnKeyType = UIReturnKeyType.Done,
			ClearButtonMode = UITextFieldViewMode.WhileEditing,
			Frame = new RectangleF(128, 7, 172, 30),
		};
		textField.ShouldReturn = delegate {
			textField.ResignFirstResponder ();
			return true;
		};
		textField.ShouldClear = delegate {
			return true;
		};
		cell.AddSubview (textField);
	}

	return cell;
}