A simple terminal UI for both docker and docker-compose, written in Go with the gocui library.
A simple terminal UI for both docker and docker-compose, written in Go with the gocui library.
برای اینکار ابتدا یک صفحه index.html ایجاد نموده و در قسمت body آن یک المنت از نوع canvas ایجاد نمائید:
<canvas id="canvas1" width="800" height="800" ></canvas>
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" > <!--[if ie]><script type="text/javascript" src="excanvas.js"></script><![endif]--> <script type="text/javascript" src="orgchart.js"></script>
var o = new orgChart(); o.addNode(1, '', '', 'Root node'); o.addNode(2, 1, 'u', 'u-node 1'); o.addNode(3, 1, 'u', 'u-node 2'); o.addNode(4, 1, 'u', 'u-node 3'); o.addNode(5, 1, 'l', 'l-node 1'); o.addNode(6, 1, 'l', 'l-node 2'); o.addNode(7, 1, 'r', 'r-node 1'); o.addNode(8, 1, 'r', 'r-node 2'); o.addNode(9, 1, 'r', 'r-node 3'); o.addNode('', '', '', 'Root 2'); o.addNode('', 'Root 2', 'r', 'using'); o.addNode('', 'Root 2', 'r', 'text as\nid'); o.drawChart('canvas1');
پارامترهای تابع ()drowChart :
var userId= User.Identity.GetUserId(); var user = _context.Users.Find(userId); var user = int.Parse(User.Identity.GetUserId());
public class CommonASPNETRegistry : StructureMap.Configuration.DSL.Registry { public CommonASPNETRegistry() { For<IIdentity>().Use(() => HttpContext.Current.User.Identity); // Other dependencies } }
public static class SmObjectFactory { private static readonly Lazy<Container> _containerBuilder = new Lazy<Container>(defaultContainer, LazyThreadSafetyMode.ExecutionAndPublication); public static IContainer Container { get { return _containerBuilder.Value; } } private static Container defaultContainer() { return new Container(ioc => { // Other settings ioc.AddRegistry(new CommonASPNETRegistry()); }); } }
var user = int.Parse(User.Identity.GetUserId());
public interface ICurrentUser { ApplicationUser User { get; } }
public class CurrentUser : ICurrentUser { private readonly IIdentity _identity; private readonly IApplicationUserManager _userManager; private ApplicationUser _user; public CurrentUser(IIdentity identity, IApplicationUserManager userManager) { _identity = identity; _userManager = userManager; } public ApplicationUser User { get { return _user ?? (_user = _userManager.FindById(int.Parse(_identity.GetUserId()))); } } }
public class HomeController : BaseController { private readonly ICurrentUser _currentUser; public HomeController(ICurrentUser user) { _user = user; } public ActionResult Index() { // user var user = _currentUser.User; // user id var userId = _currentUser.User.Id; } }
namespace CoreIocServices { public interface IMessageService { void Send(string message); } public class EmailService : IMessageService { public void Send(string message) { // ... } } public class SmsService : IMessageService { public void Send(string message) { //todo: ... } } }
namespace CoreIocSample02 { public class Startup { public void ConfigureServices(IServiceCollection services) { services.AddTransient<IMessageService, EmailService>(); services.AddTransient<IMessageService, SmsService>(); }
using CoreIocServices; using Microsoft.AspNetCore.Mvc; namespace CoreIocSample02.Controllers { public class MessagesController : Controller { private readonly IMessageService _emailService; private readonly IMessageService _smsService; public MessagesController(IMessageService emailService, IMessageService smsService) { _emailService = emailService; _smsService = smsService; } } }
using System.Collections.Generic; using CoreIocServices; using Microsoft.AspNetCore.Mvc; namespace CoreIocSample02.Controllers { public class MessagesController : Controller { private readonly IEnumerable<IMessageService> _messageServices; public MessagesController(IEnumerable<IMessageService> messageServices) { _messageServices = messageServices; }
var emailService = _messageServices.OfType<EmailService>().First();
var messageServices = serviceProvider.GetServices<IMessageService>();
namespace CoreIocServices { public enum MessageServiceType { EmailService, SmsService }
namespace CoreIocSample02 { public class Startup { public void ConfigureServices(IServiceCollection services) { services.AddTransient<EmailService>(); services.AddTransient<SmsService>();
namespace CoreIocSample02 { public class Startup { public void ConfigureServices(IServiceCollection services) { services.AddTransient<EmailService>(); services.AddTransient<SmsService>(); services.AddTransient<Func<MessageServiceType, IMessageService>>(serviceProvider => key => { switch (key) { case MessageServiceType.EmailService: return serviceProvider.GetRequiredService<EmailService>(); case MessageServiceType.SmsService: return serviceProvider.GetRequiredService<SmsService>(); default: throw new NotImplementedException($"Service of type {key} is not implemented."); } });
namespace CoreIocSample02.Controllers { public class MessagesController : Controller { private readonly Func<MessageServiceType, IMessageService> _messageServiceResolver; public MessagesController(Func<MessageServiceType, IMessageService> messageServiceResolver) { _messageServiceResolver = messageServiceResolver; }
public IActionResult Index() { var emailService = _messageServiceResolver(MessageServiceType.EmailService); //use emailService ... return View(); }
<title>@ViewBag.Title</title> <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" /> <link href="../../plupload/js/jquery.plupload.queue/css/jquery.plupload.queue.css" rel="stylesheet" /> <script src="@Url.Content("~/Scripts/jquery-1.7.1.min.js")" type="text/javascript"></script> <script type="text/javascript" src="http://bp.yahooapis.com/2.4.21/browserplus-min.js"></script> <script src="../../plupload/js/plupload.full.js"></script> <script src="../../plupload/js/jquery.plupload.queue/jquery.plupload.queue.js"></script> <script src="../../plupload/js/i18n/fa.js"></script>
@{ ViewBag.Title = "Uploading Files using PlUpload"; } <h2>@ViewBag.Message</h2> @using (Html.BeginForm("Post", "home", FormMethod.Post, new { enctype = "multipart/form-data" })) { <div id="uploader"> <p>You browser doesn't have Flash, Silverlight, Gears, BrowserPlus or HTML5 support.</p> </div> } <script> $(function () { $("#uploader").pluploadQueue({ // General settings runtimes: 'html5,gears,flash,silverlight,browserplus,html4', url: '@Url.Action("Upload" , "Home")', max_file_size: '10mb', chunk_size: '1mb', unique_names: true, // Resize images on clientside if we can resize: { width: 320, height: 240, quality: 90 }, // Specify what files to browse for filters: [ { title: "Image files", extensions: "jpg,gif,png" }, { title: "Zip files", extensions: "zip" } ], // Flash settings flash_swf_url: '/plupload/js/plupload.flash.swf', // Silverlight settings silverlight_xap_url: '/plupload/js/plupload.silverlight.xap' }); }); </script>
[HttpPost] public ActionResult Upload(int? chunk, string name) { var fileUpload = Request.Files[0]; var uploadPath = Server.MapPath("~/App_Data"); chunk = chunk ?? 0; using (var fs = new FileStream(Path.Combine(uploadPath, name), chunk == 0 ? FileMode.Create : FileMode.Append)) { if (fileUpload != null) { var buffer = new byte[fileUpload.InputStream.Length]; fileUpload.InputStream.Read(buffer, 0, buffer.Length); fs.Write(buffer, 0, buffer.Length); } } return Content("chunk uploaded", "text/plain"); }
CREATE TABLE `Users` ( id int NOT NULL AUTO_INCREMENT, first_name VARCHAR(255) NOT NULL, last_name VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL, gender ENUM('Male','Female') NOT NULL, PRIMARY KEY (`id`) )
SELECT *, CONCAT(first_name, '', last_name) AS full_name FROM Users;
ALTER TABLE Users ADD COLUMN full_name TEXT GENERATED ALWAYS AS (CONCAT(first_name, ' ', last_name))
ALTER TABLE Users ADD COLUMN full_name TEXT GENERATED ALWAYS AS (CONCAT(first_name, ' ', last_name)) STORED
ALTER TABLE productMetadata ADD COLUMN id INT GENERATED ALWAYS AS (JSON_UNQUOTE(JSON_EXTRACT(data, '$.id'))) STORED NOT NULL
SELECT data ->> "$.description.shortDescription" FROM productMetadata WHERE id = 1;
همانطور که مشاهده میکنید مقدار type به ALL تنظیم شدهاست؛ همچنین مقدار rows نیز تعداد ردیفهای جدول است که در اینجا ۱۳ ردیف دیتا را داریم. قاعدتاً با اضافه شدن دیتای جدید به جدول، جستجو نیز به مراتب کندتر خواهد شد. بنابراین با اضافه کردن ایندکس میتوانیم مشکل این کند بودن را رفع کنیم. به همین جهت در ادامه یک ایندکس را براساس ستون id که یک generated column است ایجاد خواهیم کرد:
CREATE INDEX idx_json_data ON productMetadata (id);
اکنون اگر یکبار دیگر کوئری قبلی را اجرا کنیم، خواهیم دید که تعداد rows به ۱ و همچنین type به ref ست شدهاند:
var state = Battery.State; // Charging, Full, Discharging, ...